cherry-pick(#15224): fix: do not throw on removeListener without listener (#15227)

SHA: b3c31f5b13
This commit is contained in:
Max Schmitt 2022-06-29 14:44:48 +02:00 committed by GitHub
parent 140f8e45f9
commit 389aa59470
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 1 deletions

View file

@ -119,7 +119,8 @@ export class JoiningEventEmitter implements EventEmitter {
}
private _wrapper(listener: (...args: any[]) => void) {
return (listener as any)[wrapperListener];
// Fallback to original listener if not wrapped to ensure backwards compatibility Node.js's event emitter
return (listener as any)[wrapperListener] ?? listener;
}
private _original(wrapper: Function): Function {

View file

@ -128,3 +128,7 @@ it('should handle window', async ({ page, browserName, isElectron }) => {
]);
expect(error.message).toBe(browserName === 'chromium' ? 'Window' : '[object Window]');
});
it('should remove a listener of a non-existing event handler', async ({ page }) => {
page.removeListener('pageerror', () => {});
});