ethers-tools
Version:
Contains tools for work with web3 contracts.
16 lines (13 loc) • 370 B
JavaScript
import { createSignalsPromise } from './index.js';
/**
* @template T
* @param {() => Promise<T>} racer
* @param {AbortSignal[]} [signals=[]]
* @returns {Promise<T>}
*/
export async function raceWithSignals(racer, signals = []) {
for (const signal of signals) {
signal.throwIfAborted();
}
return Promise.race([racer(), createSignalsPromise(signals)]);
}