export type Resolvable = T | Promise; /** * An internal implementation of Promise.withResolvers * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers */ export class Defer { resolve!: (thenableOrResult: R | Promise) => void; reject!: (error: any) => void; promise: Promise; constructor() { this.promise = new Promise((_resolve, _reject) => { this.resolve = _resolve; this.reject = _reject; }); } } /** * An internal implementation of Promise.withResolvers * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers */ export function defer(): Defer { return new Defer(); }