2025-11-05 17:04:23 -03:00

19 lines
392 B
JavaScript

import TimeoutError from "./TimeoutError.js";
import delay from "./delay.js";
export default function timeout(promise, ms) {
const promiseDelay = delay(ms);
function cancelDelay() {
clearTimeout(promiseDelay.timeout);
}
const error = new TimeoutError();
return Promise.race([
promise.finally(cancelDelay),
promiseDelay.then(() => {
throw error;
}),
]);
}