@@ -305,7 +305,6 @@ def __init__(
305305 self ._dispatcher_fiber = dispatcher_fiber
306306 self ._transport = transport
307307 self ._transport .on_message = lambda msg : self .dispatch (msg )
308- self ._waiting_for_object : Dict [str , Callable [[ChannelOwner ], None ]] = {}
309308 self ._last_id = 0
310309 self ._objects : Dict [str , ChannelOwner ] = {}
311310 self ._callbacks : Dict [int , ProtocolCallback ] = {}
@@ -341,7 +340,16 @@ async def run(self) -> None:
341340 self ._root_object = RootChannelOwner (self )
342341
343342 async def init () -> None :
344- self .playwright_future .set_result (await self ._root_object .initialize ())
343+ try :
344+ result = await self ._root_object .initialize ()
345+ if not self .playwright_future .done ():
346+ self .playwright_future .set_result (result )
347+ except Exception as exc :
348+ # No re-raise: callers observe playwright_future; a task
349+ # exception would log "never retrieved". Skip set_* if async
350+ # __aenter__ already cancelled the future after a transport error.
351+ if not self .playwright_future .done ():
352+ self .playwright_future .set_exception (exc )
345353
346354 await self ._transport .connect ()
347355 self ._init_task = self ._loop .create_task (init ())
@@ -374,11 +382,6 @@ def cleanup(self, cause: str = None) -> None:
374382 self ._callbacks .clear ()
375383 self .emit ("close" )
376384
377- def call_on_object_with_known_name (
378- self , guid : str , callback : Callable [[ChannelOwner ], None ]
379- ) -> None :
380- self ._waiting_for_object [guid ] = callback
381-
382385 def set_is_tracing (self , is_tracing : bool ) -> None :
383386 if is_tracing :
384387 self ._tracing_count += 1
@@ -574,10 +577,7 @@ def _create_remote_object(
574577 self , parent : ChannelOwner , type : str , guid : str , initializer : Dict
575578 ) -> ChannelOwner :
576579 initializer = self ._replace_guids_with_channels (initializer )
577- result = self ._object_factory (parent , type , guid , initializer )
578- if guid in self ._waiting_for_object :
579- self ._waiting_for_object .pop (guid )(result )
580- return result
580+ return self ._object_factory (parent , type , guid , initializer )
581581
582582 def _replace_channels_with_guids (
583583 self ,
0 commit comments