@naturalcycles/js-lib
Version:
Standard library for universal (browser + Node.js) javascript
18 lines (17 loc) • 580 B
JavaScript
/* eslint-disable @typescript-eslint/promise-function-async */
/**
* Returns DeferredPromise - a Promise that has .resolve() and .reject() methods.
*/
export function pDefer() {
let resolve;
let reject;
const promise = new Promise((_resolve, _reject) => {
resolve = _resolve;
reject = _reject;
});
promise.resolve = resolve;
promise.reject = reject;
promise.rejectAborted = reason => reject(new Error(['Aborted', reason].filter(Boolean).join(': ')));
promise.abort = reason => promise.rejectAborted(reason);
return promise;
}