aboutsummaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/util/openPromise.ts
blob: 3f6da81bdf0af9d11867409da5fc17a8884907fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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;