diff --git a/lib/internal/abort_controller.js b/lib/internal/abort_controller.js index d2db19d..00ef852 100644 --- a/lib/internal/abort_controller.js +++ b/lib/internal/abort_controller.js @@ -3,9 +3,20 @@ if (typeof AbortController === 'undefined') { module.exports = { AbortController: class AbortController { - signal = { aborted: false, addEventListener () {}, removeEventListener () {} } + #eventListener = new Set() + signal = { + aborted: false, + addEventListener: (_, listener) => { + this.#eventListener.add(listener) + }, + removeEventListener: (_, listener) => { + this.#eventListener.delete(listener) + } + } + abort () { this.signal.aborted = true + this.#eventListener.forEach(listener => listener()) } } } diff --git a/test/parallel/test-runner-exit-code.js b/test/parallel/test-runner-exit-code.js index f53bc7e..014d381 100644 --- a/test/parallel/test-runner-exit-code.js +++ b/test/parallel/test-runner-exit-code.js @@ -54,5 +54,5 @@ if (process.argv[2] === 'child') { assert.strictEqual(child.signal, null) runAndKill(fixtures.path('test-runner', 'never_ending_sync.js')).then(common.mustCall()) - runAndKill(fixtures.path('test-runner', 'never_ending_async.js')).then(typeof AbortSignal === 'undefined' ? undefined : common.mustCall()) + runAndKill(fixtures.path('test-runner', 'never_ending_async.js')).then(common.mustCall()) }