diff --git a/lib/internal/event_target.js b/lib/internal/event_target.js index 0f9a896396f79c..f0bcf032d0f07f 100644 --- a/lib/internal/event_target.js +++ b/lib/internal/event_target.js @@ -482,6 +482,10 @@ class EventTarget { } type = String(type); + if (signal === null) { + throw new ERR_INVALID_ARG_TYPE('options.signal', 'AbortSignal', signal); + } + if (signal) { if (signal.aborted) { return; diff --git a/test/parallel/test-eventtarget-whatwg-signal.js b/test/parallel/test-eventtarget-whatwg-signal.js index dfe5810180d90e..125d62f52d30de 100644 --- a/test/parallel/test-eventtarget-whatwg-signal.js +++ b/test/parallel/test-eventtarget-whatwg-signal.js @@ -4,6 +4,7 @@ require('../common'); const { strictEqual, + throws } = require('assert'); // Manually ported from: wpt@dom/events/AddEventListenerOptions-signal.any.js @@ -157,3 +158,7 @@ const { }, { once: true }); et.dispatchEvent(new Event('foo')); } +{ + const et = new EventTarget(); + throws(() => et.addEventListener('foo', () => {}, {signal: null})); +}