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.

52 lines 1.42 kB
/** * @module Async */ import { AbortAsyncError } from "../../../async/async.errors.js"; /** * @internal */ function abortSignalToPromise(abortSignal, createError) { let reject_ = null; function abort() { if (reject_ === null) { return; } reject_(createError(abortSignal.reason)); } if (abortSignal.aborted) { return { promise: Promise.reject(createError(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) { const createError = (reason) => new AbortAsyncError(`Promise was aborted with reason of "${String(reason)}"`, reason); if (abortSignal.aborted) { throw createError(abortSignal.reason); } const { promise: abortSignalPromise, abort } = abortSignalToPromise(abortSignal, createError); try { return await Promise.race([promise, abortSignalPromise]); } finally { abortSignal.removeEventListener("abort", abort); } } //# sourceMappingURL=abort-and-fail.js.map