@huggingface/inference
Version:
Typescript client for the Hugging Face Inference Providers and Inference Endpoints
29 lines (28 loc) • 868 B
JavaScript
function createAbortError(signal) {
return signal.reason instanceof Error ? signal.reason : new DOMException("The operation was aborted", "AbortError");
}
export function delay(ms, signal) {
if (signal?.aborted) {
return Promise.reject(createAbortError(signal));
}
return new Promise((resolve, reject) => {
let cleanup = () => { };
const timeout = setTimeout(() => {
cleanup();
resolve();
}, ms);
timeout.unref?.();
if (!signal) {
return;
}
const onAbort = () => {
clearTimeout(timeout);
cleanup();
reject(createAbortError(signal));
};
cleanup = () => {
signal.removeEventListener("abort", onAbort);
};
signal.addEventListener("abort", onAbort, { once: true });
});
}