ohif-viewer/platform/core/src/utils/makeCancelable.js

24 lines
533 B
JavaScript

export default function makeCancelable(thenable) {
let isCanceled = false;
const promise = Promise.resolve(thenable).then(
function(result) {
if (isCanceled) {
throw Object.freeze({ isCanceled });
}
return result;
},
function(error) {
if (isCanceled) {
throw Object.freeze({ isCanceled, error });
}
throw error;
}
);
return Object.assign(Object.create(promise), {
then: promise.then.bind(promise),
cancel() {
isCanceled = true;
},
});
}