UNPKG

@datocms/rest-client-utils

Version:
36 lines 1.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.makeCancelablePromise = exports.CanceledPromiseError = void 0; class CanceledPromiseError extends Error { constructor() { super('Promise canceled!'); Object.setPrototypeOf(this, new.target.prototype); } } exports.CanceledPromiseError = CanceledPromiseError; function makeCancelablePromise(promiseOrAsyncFn, onCancel) { let cancel = null; const cancelable = new Promise((resolve, reject) => { cancel = () => { try { if (onCancel) { onCancel(); } reject(new CanceledPromiseError()); } catch (e) { reject(e); } }; const promise = typeof promiseOrAsyncFn === 'function' ? promiseOrAsyncFn() : promiseOrAsyncFn; promise.then(resolve, reject); }); if (cancel) { cancelable.cancel = cancel; } return cancelable; } exports.makeCancelablePromise = makeCancelablePromise; //# sourceMappingURL=makeCancelablePromise.js.map