export interface DeferredPromise { promise: Promise resolve: (value: R | PromiseLike) => void reject: (reason?: any) => void } export function createDeferredPromise (): DeferredPromise { const promise: Partial> = {} promise.promise = new Promise(function (resolve, reject) { promise.resolve = resolve promise.reject = reject }) return promise as DeferredPromise }