race-until
Version:
Race a promise against a time bomb promise.
16 lines (14 loc) • 460 B
JavaScript
export function timebomb(timeout = 3000, timeoutResponse = 'Timeout') {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (timeoutResponse instanceof Error) {
reject(timeoutResponse);
} else {
resolve(timeoutResponse);
}
}, timeout);
});
}
export function raceUntil(p, timeout = 3000, timeoutResponse = 'Timeout') {
return Promise.race([Promise.resolve(p), timebomb(timeout, timeoutResponse)]);
}