2
0
mirror of https://github.com/tenrok/axios.git synced 2026-06-23 20:40:40 +03:00

refactor: clean up composeSignals early-return structure (#10844)

Flips the main if-block to an early-return pattern to reduce nesting.
Explicitly initializes aborted to false. Adds a guard clause in
unsubscribe to avoid duplicate cleanup.

Preserves the existing manual event-listener approach because
AbortSignal.any() introduces event-loop timing differences that
break fetch adapter stream-abort tests.

Closes #10815.

Co-authored-by: mixelburg <mixelburg@gmail.com>
Co-authored-by: Jay <jasonsaayman@gmail.com>
This commit is contained in:
mixelburg
2026-05-06 20:28:31 +03:00
committed by GitHub
parent cabead5306
commit 5ad5fe0dc6
+8 -7
View File
@@ -3,12 +3,15 @@ import AxiosError from '../core/AxiosError.js';
import utils from '../utils.js'; import utils from '../utils.js';
const composeSignals = (signals, timeout) => { const composeSignals = (signals, timeout) => {
const { length } = (signals = signals ? signals.filter(Boolean) : []); signals = signals ? signals.filter(Boolean) : [];
if (timeout || length) { if (!timeout && !signals.length) {
let controller = new AbortController(); return;
}
let aborted; const controller = new AbortController();
let aborted = false;
const onabort = function (reason) { const onabort = function (reason) {
if (!aborted) { if (!aborted) {
@@ -31,7 +34,7 @@ const composeSignals = (signals, timeout) => {
}, timeout); }, timeout);
const unsubscribe = () => { const unsubscribe = () => {
if (signals) { if (!signals) { return; }
timer && clearTimeout(timer); timer && clearTimeout(timer);
timer = null; timer = null;
signals.forEach((signal) => { signals.forEach((signal) => {
@@ -40,7 +43,6 @@ const composeSignals = (signals, timeout) => {
: signal.removeEventListener('abort', onabort); : signal.removeEventListener('abort', onabort);
}); });
signals = null; signals = null;
}
}; };
signals.forEach((signal) => signal.addEventListener('abort', onabort)); signals.forEach((signal) => signal.addEventListener('abort', onabort));
@@ -50,7 +52,6 @@ const composeSignals = (signals, timeout) => {
signal.unsubscribe = () => utils.asap(unsubscribe); signal.unsubscribe = () => utils.asap(unsubscribe);
return signal; return signal;
}
}; };
export default composeSignals; export default composeSignals;