import isFunction from './isFunction'; import { noop } from './noop'; // Type declaration for Promise.withResolvers (ES2024 feature) declare global { interface PromiseConstructor { withResolvers(): { promise: Promise; resolve: (value: T | PromiseLike) => void; reject: (reason?: any) => void; }; } } export function withResolvers() { if (isFunction(Promise.withResolvers)) { return Promise.withResolvers(); } let resolve: (value: T | PromiseLike) => void = noop, reject: (reason?: any) => void = noop; const promise = new Promise((res, rej) => { resolve = res; reject = rej; }); return { promise, resolve, reject, }; }