Skip to content

Commit

Permalink
Add initial rejection when already aborted
Browse files Browse the repository at this point in the history
  • Loading branch information
jopemachine committed May 3, 2022
1 parent e400152 commit c4e4177
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions index.js
Expand Up @@ -21,6 +21,14 @@ const getDOMException = errorMessage => globalThis.DOMException === undefined ?
new AbortError(errorMessage) :
new DOMException(errorMessage);

const getAbortedReason = signal => {
const reason = signal.reason === undefined ?
getDOMException('This operation was aborted.') :
signal.reason;

return reason instanceof Error ? reason : getDOMException(reason);
};

export default function pTimeout(promise, milliseconds, fallback, options) {
let timer;

Expand All @@ -39,15 +47,14 @@ export default function pTimeout(promise, milliseconds, fallback, options) {
...options
};

if (options && options.signal) {
if (options.signal) {
const {signal} = options;
if (signal.aborted) {
reject(getAbortedReason(signal));
}

signal.addEventListener('abort', () => {
const reason = signal.reason === undefined ?
getDOMException('This operation was aborted.') :
signal.reason;

reject(reason instanceof Error ? reason : getDOMException(reason));
reject(getAbortedReason(signal));
});
}

Expand Down

0 comments on commit c4e4177

Please sign in to comment.