@datocms/rest-client-utils
Version:
Utilities for DatoCMS REST API clients
36 lines • 1.14 kB
JavaScript
;
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