diff --git a/packages/@uppy/utils/src/AbortController.js b/packages/@uppy/utils/src/AbortController.js index 91ee1efd1a..366cb2c827 100644 --- a/packages/@uppy/utils/src/AbortController.js +++ b/packages/@uppy/utils/src/AbortController.js @@ -1,6 +1,13 @@ +import hasOwnProperty from './hasProperty.js' /** * Little AbortController proxy module so we can swap out the implementation easily later. */ export const { AbortController } = globalThis export const { AbortSignal } = globalThis -export const createAbortError = (message = 'Aborted') => new DOMException(message, 'AbortError') +export const createAbortError = (message = 'Aborted', options) => { + const err = new DOMException(message, 'AbortError') + if (options != null && hasOwnProperty(options, 'cause')) { + Object.defineProperty(err, 'cause', { __proto__: null, configurable: true, writable: true, value: options.cause }) + } + return err +} diff --git a/packages/@uppy/utils/types/index.d.ts b/packages/@uppy/utils/types/index.d.ts index d97faf8466..70df2c6e52 100644 --- a/packages/@uppy/utils/types/index.d.ts +++ b/packages/@uppy/utils/types/index.d.ts @@ -241,7 +241,7 @@ declare module '@uppy/utils/lib/toArray' { declare module '@uppy/utils/lib/AbortController' { export const AbortController: typeof globalThis.AbortController export const AbortSignal: typeof globalThis.AbortSignal - export function createAbortError(message?: string): DOMException + export function createAbortError(message?: string, options?: ErrorOptions): DOMException } declare module '@uppy/utils/lib/getDroppedFiles' {