export interface Deferred { promise: Promise; resolve: (value: T) => void; reject: (reason?: any) => void; } export const deferred = () => { const deferred: Deferred = { promise: null, resolve: null, reject: null, } as any; deferred.promise = new Promise((resolve, reject) => { deferred.resolve = resolve; deferred.reject = reject; }); return deferred; };