0 day streak
javascript / expert
Snippet

Orchestrating Timeouts with AbortSignal.any()

AbortSignal.any allows combining multiple abort signals into one. This is essential in Node.js for complex async orchestration, such as canceling a request if either a specific timeout expires, the user cancels the action, or a parent process shuts down, providing a clean way to manage concurrent cancellation logic.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
const userAbort = new AbortController();
const timeoutAbort = AbortSignal.timeout(5000);
const combinedSignal = AbortSignal.any([
userAbort.signal,
timeoutAbort
]);
try {
const response = await fetch(url, { signal: combinedSignal });
} catch (err) {
if (err.name === 'AbortError') console.log('Operation cancelled');
}
nodejs
Breakdown
1
AbortSignal.any([...])
Creates a new signal that aborts when any of the provided signals abort.
2
AbortSignal.timeout(5000)
A built-in utility signal that triggers after a specified delay.