Files
Verso/services/web/frontend/js/utils/abort-signal.ts
T
Alf EatonandCopybot 8406807552 Always wait for buffered ops before compiling (#23336)
GitOrigin-RevId: 1e586979897fb01378e449fe9dc9c7d269de83bb
2025-02-05 09:05:19 +00:00

26 lines
709 B
TypeScript

export const supportsModernAbortSignal =
typeof AbortSignal.any === 'function' &&
typeof AbortSignal.timeout === 'function'
export const signalWithTimeout = (signal: AbortSignal, timeout: number) => {
if (supportsModernAbortSignal) {
return AbortSignal.any([signal, AbortSignal.timeout(timeout)])
}
const abortController = new AbortController()
const abort = () => {
window.clearTimeout(timer)
signal.removeEventListener('abort', abort)
abortController.abort()
}
// abort after timeout has expired
const timer = window.setTimeout(abort, timeout)
// abort when the original signal is aborted
signal.addEventListener('abort', abort)
return abortController.signal
}