export default function makeCancellablePromise(promise: Promise) { let isCancelled = false; const wrappedPromise: typeof promise = new Promise((resolve, reject) => { promise .then((value) => !isCancelled && resolve(value)) .catch((error) => !isCancelled && reject(error)); }); return { promise: wrappedPromise, cancel() { isCancelled = true; }, }; }