export type PromiseWithResolvers = { resolve: (arg: TPromise) => void; reject: (error: Error) => void; promise: Promise; }; /** * @description Application level polyfill. */ export const promiseWithResolvers = < TPromise, >(): PromiseWithResolvers => { let resolve: (arg: TPromise) => void; let reject: (error: Error) => void; const promise = new Promise((_resolve, _reject) => { resolve = _resolve; reject = _reject; }); return { resolve: resolve!, reject: reject!, promise }; };