iceshrimp/packages/backend/src/prelude/promise.ts

5 lines
No EOL
352 B
TypeScript

// Returns T if promise settles before timeout, otherwise returns void, finishing execution in the background.
export async function promiseEarlyReturn<T>(promise: Promise<T>, after: number): Promise<T | void> {
const timer: Promise<void> = new Promise((res) => setTimeout(() => res(undefined), after));
return Promise.race([promise, timer]);
}