Skip to content

Commit cf9206a

Browse files
authored
fix: clear onerror after exhausting retries (#207)
1 parent 6f428c6 commit cf9206a

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

src/index.test.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,27 @@ test("script onerror should not reset retry mechanism with parallel loaders", as
213213
expect(console.log).toHaveBeenCalledTimes(loader.retries);
214214
});
215215

216+
test("resetIfRetryingFailed should clear state", async () => {
217+
const loader = new Loader({ apiKey: "foo", retries: 0 });
218+
219+
// eslint-disable-next-line @typescript-eslint/no-empty-function
220+
console.log = jest.fn();
221+
222+
const rejection1 = expect(loader.load()).rejects.toBeInstanceOf(ErrorEvent);
223+
loader["loadErrorCallback"](document.createEvent("ErrorEvent"));
224+
jest.runAllTimers();
225+
226+
await Promise.all([rejection1]);
227+
expect(loader["done"]).toBeTruthy();
228+
expect(loader["loading"]).toBeFalsy();
229+
expect(loader["errors"].length).toBe(1);
230+
231+
loader["resetIfRetryingFailed"]();
232+
expect(loader["done"]).toBeFalsy();
233+
expect(loader["loading"]).toBeFalsy();
234+
expect(loader["onerrorEvent"]).toBe(null);
235+
});
236+
216237
test("loader should not reset retry mechanism if successfully loaded", () => {
217238
const loader = new Loader({ apiKey: "foo", retries: 0 });
218239
const deleteScript = jest.spyOn(loader, "deleteScript");

src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,7 @@ export class Loader {
432432
this.done = false;
433433
this.loading = false;
434434
this.errors = [];
435+
this.onerrorEvent = null;
435436
}
436437
}
437438

0 commit comments

Comments
 (0)