UNPKG

ethers-tools

Version:

Contains tools for work with web3 contracts.

23 lines (19 loc) 521 B
import { createSignalsPromise } from './index.js'; /** * @template T * @param {() => Promise<T>} racer * @param {AbortSignal[]} [signals=[]] * @returns {Promise<T>} */ export const raceWithSignals = async (racer, signals = []) => { for (const signal of signals) { signal.throwIfAborted(); } const signalsPromise = createSignalsPromise(signals); const cleanup = signalsPromise.cleanup ?? (() => {}); try { return await Promise.race([racer(), signalsPromise]); } finally { cleanup(); } };