diff --git a/lib/internal/event_target.js b/lib/internal/event_target.js index 5a4f7c02909..e762b5b7fb1 100644 --- a/lib/internal/event_target.js +++ b/lib/internal/event_target.js @@ -722,7 +722,7 @@ class EventTarget { return; type = webidl.converters.DOMString(type); - const capture = options?.capture === true; + const capture = typeof options === 'boolean' ? options : options?.capture === true; if (this[kEvents] === undefined) return; diff --git a/test/parallel/test-eventtarget.js b/test/parallel/test-eventtarget.js index d0b3ad03a1d..0d47511118b 100644 --- a/test/parallel/test-eventtarget.js +++ b/test/parallel/test-eventtarget.js @@ -419,6 +419,20 @@ let asyncTest = Promise.resolve(); target.removeEventListener('foo', a, { capture: false }); target.dispatchEvent(new Event('foo')); } + +{ + const target = new EventTarget(); + const a = common.mustCall(3); + + target.addEventListener('foo', a, true); + target.addEventListener('foo', a, false); + + target.dispatchEvent(new Event('foo')); + target.removeEventListener('foo', a, true); + target.dispatchEvent(new Event('foo')); + target.removeEventListener('foo', a, false); + target.dispatchEvent(new Event('foo')); +} { const target = new EventTarget(); assert.strictEqual(target.toString(), '[object EventTarget]');