From cd93c0c735c07476ae6a463e451895084147601e Mon Sep 17 00:00:00 2001 From: Hiten Shah Date: Wed, 22 Apr 2026 22:35:05 -0700 Subject: [PATCH 1/2] fix(daemon): fire-and-forget mark_js in tap handler (fixes #136) --- daemon.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/daemon.py b/daemon.py index bf99d4d1..d8ba356a 100644 --- a/daemon.py +++ b/daemon.py @@ -154,8 +154,7 @@ async def tap(method, params, session_id=None): elif method == "Page.javascriptDialogClosed": self.dialog = None elif method in ("Page.loadEventFired", "Page.domContentEventFired"): - try: await asyncio.wait_for(self.cdp.send_raw("Runtime.evaluate", {"expression": mark_js}, session_id=self.session), timeout=2) - except Exception: pass + asyncio.create_task(self.cdp.send_raw("Runtime.evaluate", {"expression": mark_js}, session_id=self.session)) return await orig(method, params, session_id) self.cdp._event_registry.handle_event = tap From 97790342cafed5c11029a1a1df5ff6577949f71f Mon Sep 17 00:00:00 2001 From: Hiten Shah Date: Wed, 22 Apr 2026 22:52:18 -0700 Subject: [PATCH 2/2] fix(daemon): guard fire-and-forget mark_js against unhandled exceptions --- daemon.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/daemon.py b/daemon.py index d8ba356a..f636c260 100644 --- a/daemon.py +++ b/daemon.py @@ -154,7 +154,10 @@ async def tap(method, params, session_id=None): elif method == "Page.javascriptDialogClosed": self.dialog = None elif method in ("Page.loadEventFired", "Page.domContentEventFired"): - asyncio.create_task(self.cdp.send_raw("Runtime.evaluate", {"expression": mark_js}, session_id=self.session)) + async def _mark(): + try: await self.cdp.send_raw("Runtime.evaluate", {"expression": mark_js}, session_id=self.session) + except Exception: pass + asyncio.create_task(_mark()) return await orig(method, params, session_id) self.cdp._event_registry.handle_event = tap