race-cancellation
Version:
Utilities for using Promise.race([task, cancellation]) for async/await code.
24 lines • 873 B
JavaScript
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