1 |
|
2 |
|
3 | "use strict";
|
4 |
|
5 | export type Defered = {
|
6 | promise: Promise<void>;
|
7 | resolve: () => void;
|
8 | reject: (e: Error) => void;
|
9 | rejectingPromise: Promise<any>;
|
10 | };
|
11 |
|
12 | export function create(): Defered {
|
13 | let _resolve: () => void = () => {};
|
14 | let _reject: (e: Error) => void = (e) => {};
|
15 | const promise = new Promise((resolve, reject) => {
|
16 | _resolve = resolve;
|
17 | _reject = reject;
|
18 | });
|
19 | const rejectingPromise = promise.then(() => {
|
20 | throw new Error(`Promise is always rejecting`);
|
21 | });
|
22 | return {
|
23 | promise,
|
24 | rejectingPromise,
|
25 | resolve: _resolve,
|
26 | reject: _reject,
|
27 | };
|
28 | }
|