diff options
Diffstat (limited to 'packages/idb-bridge/src/util/openPromise.ts')
-rw-r--r-- | packages/idb-bridge/src/util/openPromise.ts | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/packages/idb-bridge/src/util/openPromise.ts b/packages/idb-bridge/src/util/openPromise.ts new file mode 100644 index 000000000..3f6da81bd --- /dev/null +++ b/packages/idb-bridge/src/util/openPromise.ts @@ -0,0 +1,22 @@ +function openPromise<T>(): { + promise: Promise<T>; + resolve: (v?: T | PromiseLike<T>) => void; + reject: (err?: any) => void; +} { + let resolve; + let reject; + const promise = new Promise<T>((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; |