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