export type ResolveablePromise = Promise & { readonly resolve: (value: T) => void, readonly reject: (error: any) => void }; export function resolveable(): ResolveablePromise { let promiseResolve = undefined; let promiseReject = undefined; const promise = new Promise( function (resolve, reject) { promiseResolve = resolve; promiseReject = reject; }); // @ts-ignore promise.resolve = promiseResolve; // @ts-ignore promise.reject = promiseReject; return promise as ResolveablePromise; }