export interface Resolver { promise: Promise; resolve: (res: R) => void; reject: (err: E) => void; } export function resolver(): Resolver { let resolve!: (res: R) => void; let reject!: (err: E) => void; const promise = new Promise((res, rej) => { resolve = res; reject = rej; }); return {promise, resolve, reject}; }