UNPKG

@daiso-tech/core

Version:

The library offers flexible, framework-agnostic solutions for modern web applications, built on adaptable components that integrate seamlessly with popular frameworks like Next Js.

51 lines 1.25 kB
/** * @module Async */ /** * @internal */ function abortSignalToPromise(abortSignal) { let reject_ = null; function abort() { if (reject_ === null) { return; } reject_(abortSignal.reason); } if (abortSignal.aborted) { return { // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors promise: Promise.reject(abortSignal.reason), abort, }; } return { promise: new Promise((_resolve, reject) => { reject_ = reject; if (abortSignal.aborted) { abort(); return; } abortSignal.addEventListener("abort", abort, { once: true, }); }), abort, }; } /** * @internal */ export async function abortAndFail(promise, abortSignal) { if (abortSignal.aborted) { throw abortSignal.reason; } const { promise: abortSignalPromise, abort } = abortSignalToPromise(abortSignal); try { return await Promise.race([promise, abortSignalPromise]); } finally { abortSignal.removeEventListener("abort", abort); } } //# sourceMappingURL=abort-and-fail.js.map