function openPromise(): { promise: Promise; resolve: (v?: T | PromiseLike) => void; reject: (err?: any) => void; } { let resolve; let reject; const promise = new Promise((resolve2, reject2) => { resolve = resolve2; reject = reject2; }); if (!resolve) { throw Error("broken invariant"); } if (!reject) { throw Error("broken invariant"); } return { promise, resolve, reject }; } export default openPromise;