@daisugi/kintsugi
Version:
Kintsugi is a set of utilities to help build a fault tolerant services.
39 lines (38 loc) • 746 B
text/typescript
export function deferredPromise() {
let isPending = true;
let isRejected = false;
let isFulfilled = false;
let resolve!: (value?: any) => void;
let reject!: (reason?: any) => void;
const promise = new Promise(
(privateResolve, privateReject) => {
resolve = privateResolve;
reject = privateReject;
},
).then(
(value) => {
isFulfilled = true;
isPending = false;
return value;
},
(reason) => {
isRejected = true;
isPending = false;
throw reason;
},
);
return {
isFulfilled() {
return isFulfilled;
},
isPending() {
return isPending;
},
isRejected() {
return isRejected;
},
resolve,
reject,
promise,
};
}