14 lines
444 B
TypeScript
14 lines
444 B
TypeScript
/**
|
|
* Polyfill for Promise.withResolvers() (ES2024, Node 22+).
|
|
* package.json declares "engines": { "node": ">=18.0.0" } so we can't use the native one.
|
|
*/
|
|
export function withResolvers<T>(): PromiseWithResolvers<T> {
|
|
let resolve!: (value: T | PromiseLike<T>) => void
|
|
let reject!: (reason?: unknown) => void
|
|
const promise = new Promise<T>((res, rej) => {
|
|
resolve = res
|
|
reject = rej
|
|
})
|
|
return { promise, resolve, reject }
|
|
}
|