type ResolveFunction = undefined extends T ? (value?: T) => unknown : (value: T) => unknown; /** * A type-safe utility function to create a Promise with resolve and reject functions. * @returns A tuple containing a Promise, a resolve function, and a reject function. */ export function createPromise(): [ Promise, ResolveFunction, (error: unknown) => unknown ] { let resolve: undefined | ResolveFunction = undefined; let reject: undefined | ((error: unknown) => unknown) = undefined; const creationPromise = new Promise( (resolve_, reject_) => ( (resolve = resolve_ as ResolveFunction), (reject = reject_) ) ); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return [creationPromise, resolve!, reject!]; }