UNPKG

race-cancellation

Version:

Utilities for using Promise.race([task, cancellation]) for async/await code.

24 lines 873 B
import noopRaceCancel from "./noopRaceCancel.js"; /** * Creates a cancellable Promise from an executor that returns a {@link DisposeFn} function and a {@link RaceCancelFn} function. * * @param disposableExecutor - a {@link DisposableExecutorFn} function (this will not be run if already cancelled). * @param raceCancel - a {@link RaceCancelFn} function to race against the disposable promise against. * @public */ export default async function cancellablePromise(disposableExecutor, raceCancel = noopRaceCancel) { let dispose; let result; try { result = await raceCancel(() => new Promise((resolve, reject) => { dispose = disposableExecutor(resolve, reject); })); } finally { if (dispose !== undefined) { dispose(); } } return result; } //# sourceMappingURL=cancellablePromise.js.map