| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | 
							- import CanceledError from "../cancel/CanceledError.js";
 
- import AxiosError from "../core/AxiosError.js";
 
- import utils from '../utils.js';
 
- const composeSignals = (signals, timeout) => {
 
-   const {length} = (signals = signals ? signals.filter(Boolean) : []);
 
-   if (timeout || length) {
 
-     let controller = new AbortController();
 
-     let aborted;
 
-     const onabort = function (reason) {
 
-       if (!aborted) {
 
-         aborted = true;
 
-         unsubscribe();
 
-         const err = reason instanceof Error ? reason : this.reason;
 
-         controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));
 
-       }
 
-     }
 
-     let timer = timeout && setTimeout(() => {
 
-       timer = null;
 
-       onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))
 
-     }, timeout)
 
-     const unsubscribe = () => {
 
-       if (signals) {
 
-         timer && clearTimeout(timer);
 
-         timer = null;
 
-         signals.forEach(signal => {
 
-           signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);
 
-         });
 
-         signals = null;
 
-       }
 
-     }
 
-     signals.forEach((signal) => signal.addEventListener('abort', onabort));
 
-     const {signal} = controller;
 
-     signal.unsubscribe = () => utils.asap(unsubscribe);
 
-     return signal;
 
-   }
 
- }
 
- export default composeSignals;
 
 
  |