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 }