/ utils / withResolvers.ts
withResolvers.ts
 1  /**
 2   * Polyfill for Promise.withResolvers() (ES2024, Node 22+).
 3   * package.json declares "engines": { "node": ">=18.0.0" } so we can't use the native one.
 4   */
 5  export function withResolvers<T>(): PromiseWithResolvers<T> {
 6    let resolve!: (value: T | PromiseLike<T>) => void
 7    let reject!: (reason?: unknown) => void
 8    const promise = new Promise<T>((res, rej) => {
 9      resolve = res
10      reject = rej
11    })
12    return { promise, resolve, reject }
13  }