◐ Shell
clean mode source ↗

Fix events remove listener emission by Han5991 · Pull Request #60137 · nodejs/node

@nodejs-github-bot added events

Issues and PRs related to the events subsystem / EventEmitter.

needs-ci

PRs that need a full CI run.

labels

Oct 7, 2025

@Han5991 Han5991 marked this pull request as ready for review

October 7, 2025 05:54
Adds test coverage for the removeListener event being emitted
when a once() listener is automatically removed after execution.
This verifies that streams and other EventEmitters correctly
emit removeListener events when once() wrappers clean up.

simonkcleung

@avivkeller avivkeller added the author ready

PRs that have at least one approval, no pending requests for changes, and a CI started.

label

Jan 16, 2026

avivkeller

atlowChemi

mertcanaltin

When the last listener is removed and _eventsCount becomes 0,
the removeListener event was not being emitted because the check
was inside the else block. This moves the removeListener emission
outside the conditional to ensure it always fires when a listener
is removed.

@RafaelGSS RafaelGSS added request-ci

Add this label to start a Jenkins CI on a PR.

commit-queue-squash

Add this label to instruct the Commit Queue to squash all the PR commits into the first one.

and removed commit-queue-failed

An error occurred while landing this pull request using GitHub Actions.

commit-queue-rebase

Add this label to allow the Commit Queue to land a PR in several commits.

labels

Jan 26, 2026

RafaelGSS

gurgunday

aduh95 pushed a commit that referenced this pull request

Jan 28, 2026
Adds test coverage for the removeListener event being emitted
when a once() listener is automatically removed after execution.
This verifies that streams and other EventEmitters correctly
emit removeListener events when once() wrappers clean up.

PR-URL: #60137
Fixes: #59977
Reviewed-By: Aviv Keller <me@aviv.sh>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>

aduh95 pushed a commit that referenced this pull request

Feb 3, 2026
Adds test coverage for the removeListener event being emitted
when a once() listener is automatically removed after execution.
This verifies that streams and other EventEmitters correctly
emit removeListener events when once() wrappers clean up.

PR-URL: #60137
Fixes: #59977
Reviewed-By: Aviv Keller <me@aviv.sh>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>

aduh95 pushed a commit that referenced this pull request

Feb 3, 2026
Adds test coverage for the removeListener event being emitted
when a once() listener is automatically removed after execution.
This verifies that streams and other EventEmitters correctly
emit removeListener events when once() wrappers clean up.

PR-URL: #60137
Fixes: #59977
Reviewed-By: Aviv Keller <me@aviv.sh>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>

aduh95 pushed a commit that referenced this pull request

Feb 6, 2026
Adds test coverage for the removeListener event being emitted
when a once() listener is automatically removed after execution.
This verifies that streams and other EventEmitters correctly
emit removeListener events when once() wrappers clean up.

PR-URL: #60137
Fixes: #59977
Reviewed-By: Aviv Keller <me@aviv.sh>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>

@Han5991 Han5991 deleted the fix-events-remove-listener-emission branch

February 8, 2026 05:43

aduh95 pushed a commit that referenced this pull request

Feb 17, 2026
Adds test coverage for the removeListener event being emitted
when a once() listener is automatically removed after execution.
This verifies that streams and other EventEmitters correctly
emit removeListener events when once() wrappers clean up.

PR-URL: #60137
Fixes: #59977
Reviewed-By: Aviv Keller <me@aviv.sh>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>

aduh95 pushed a commit that referenced this pull request

Feb 19, 2026
Adds test coverage for the removeListener event being emitted
when a once() listener is automatically removed after execution.
This verifies that streams and other EventEmitters correctly
emit removeListener events when once() wrappers clean up.

PR-URL: #60137
Fixes: #59977
Reviewed-By: Aviv Keller <me@aviv.sh>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>

aduh95 pushed a commit that referenced this pull request

Feb 21, 2026
Adds test coverage for the removeListener event being emitted
when a once() listener is automatically removed after execution.
This verifies that streams and other EventEmitters correctly
emit removeListener events when once() wrappers clean up.

PR-URL: #60137
Fixes: #59977
Reviewed-By: Aviv Keller <me@aviv.sh>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>

aduh95 pushed a commit that referenced this pull request

Feb 21, 2026
Adds test coverage for the removeListener event being emitted
when a once() listener is automatically removed after execution.
This verifies that streams and other EventEmitters correctly
emit removeListener events when once() wrappers clean up.

PR-URL: #60137
Fixes: #59977
Reviewed-By: Aviv Keller <me@aviv.sh>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>

aduh95 pushed a commit that referenced this pull request

Feb 23, 2026
Adds test coverage for the removeListener event being emitted
when a once() listener is automatically removed after execution.
This verifies that streams and other EventEmitters correctly
emit removeListener events when once() wrappers clean up.

PR-URL: #60137
Fixes: #59977
Reviewed-By: Aviv Keller <me@aviv.sh>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>

aduh95 pushed a commit that referenced this pull request

Feb 24, 2026
Adds test coverage for the removeListener event being emitted
when a once() listener is automatically removed after execution.
This verifies that streams and other EventEmitters correctly
emit removeListener events when once() wrappers clean up.

PR-URL: #60137
Fixes: #59977
Reviewed-By: Aviv Keller <me@aviv.sh>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>