| 'use strict'; |
| |
| require('../common'); |
| const assert = require('assert'); |
| const { once } = require('node:events'); |
| const { describe, it } = require('node:test'); |
| |
| describe('AbortSignal.any() with timeout signals', () => { |
| it('should abort when the first timeout signal fires', async () => { |
| const signal = AbortSignal.any([AbortSignal.timeout(9000), AbortSignal.timeout(110000)]); |
| |
| const abortPromise = Promise.race([ |
| once(signal, 'abort').then(() => { |
| throw signal.reason; |
| }), |
| new Promise((resolve) => setTimeout(resolve, 10000)), |
| ]); |
| |
| // The promise should be aborted by the 9000ms timeout |
| await assert.rejects( |
| () => abortPromise, |
| { |
| name: 'TimeoutError', |
| message: 'The operation was aborted due to timeout' |
| } |
| ); |
| }); |
| }); |