Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | export default function makeCancelable(thenable) { let isCanceled = false; const promise = Promise.resolve(thenable).then( function (result) { Iif (isCanceled) { throw Object.freeze({ isCanceled }); } return result; }, function (error) { Iif (isCanceled) { throw Object.freeze({ isCanceled, error }); } throw error; } ); return Object.assign(Object.create(promise), { then: promise.then.bind(promise), cancel() { isCanceled = true; }, }); } |