type DeferredPromise = { promise: Promise; resolve: (value?: T) => void; reject: (reason?: unknown) => void; }; /** * @returns An object containing a promise and its resolve/reject methods. */ export function createDeferredPromise(): DeferredPromise { let res: unknown; let rej: unknown; const promise = new Promise((resolve, reject) => { res = resolve; rej = reject; }); return {promise, resolve: res, reject: rej} as DeferredPromise; }