export type Resolvable = Promise & { resolve: (t: T) => void, reject: (e: any) => void, } const resolvablePromise = (): Resolvable => { let resolve: (val: T) => void let reject: (err: any) => void const promise = new Promise((_resolve, _reject) => { resolve = _resolve reject = _reject }) as Resolvable promise.resolve = resolve! promise.reject = reject! return promise } export default resolvablePromise module.exports = resolvablePromise