diff --git a/src/include-fragment-element.ts b/src/include-fragment-element.ts index c86b27f..c8e0280 100644 --- a/src/include-fragment-element.ts +++ b/src/include-fragment-element.ts @@ -220,10 +220,10 @@ export class IncludeFragmentElement extends HTMLElement { } // Functional stand in for the W3 spec "queue a task" paradigm - async #task(eventsToDispatch: string[]): Promise { + async #task(eventsToDispatch: string[], error?: Error): Promise { await new Promise(resolve => setTimeout(resolve, 0)) for (const eventType of eventsToDispatch) { - this.dispatchEvent(new Event(eventType)) + this.dispatchEvent(error ? new CustomEvent(eventType, {detail: {error}}) : new Event(eventType)) } } @@ -258,7 +258,7 @@ export class IncludeFragmentElement extends HTMLElement { // Dispatch `error` and `loadend` async to allow // the `load()` promise to resolve _before_ these // events are fired. - this.#task(['error', 'loadend']) + this.#task(['error', 'loadend'], error as Error) throw error } } diff --git a/test/test.js b/test/test.js index 7fad9c0..19066e1 100644 --- a/test/test.js +++ b/test/test.js @@ -342,6 +342,8 @@ suite('include-fragment-element', function () { const event = await when(div.firstChild, 'error') assert.equal(event.bubbles, false) assert.equal(event.cancelable, false) + assert.instanceOf(event.detail.error, Error) + assert.equal(event.detail.error.message, 'Failed to load resource: the server responded with a status of 500') }) test('adds is-error class on 500 status', async function () {