From 7e30669eb01ec9edbfac7312da398bfc69932264 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Thu, 3 Dec 2020 10:51:59 -0800 Subject: [PATCH] fix(binding): catch binding resolution against the closed page (#4583) --- src/client/page.ts | 4 ++-- test/page-expose-function.spec.ts | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/client/page.ts b/src/client/page.ts index 9f1533c400..98af7eb56c 100644 --- a/src/client/page.ts +++ b/src/client/page.ts @@ -649,9 +649,9 @@ export class BindingCall extends ChannelOwner {}); } catch (e) { - this._channel.reject({ error: serializeError(e) }); + this._channel.reject({ error: serializeError(e) }).catch(() => {}); } } } diff --git a/test/page-expose-function.spec.ts b/test/page-expose-function.spec.ts index 5be48dc77b..ff369c0d39 100644 --- a/test/page-expose-function.spec.ts +++ b/test/page-expose-function.spec.ts @@ -222,3 +222,12 @@ it('exposeBindingHandle should throw for multiple arguments', async ({page}) => }).catch(e => e); expect(error.message).toContain('exposeBindingHandle supports a single argument, 2 received'); }); + +it('should not result in unhandled rejection', async ({page}) => { + await page.exposeFunction('foo', async () => { + await page.close(); + }); + await page.evaluate(() => { + (window as any).foo(); + }); +});