@@ -254,6 +254,7 @@ class PyMongoBaseProtocol(Protocol):
254254 def __init__ (self , timeout : Optional [float ] = None ):
255255 self .transport : Transport = None # type: ignore[assignment]
256256 self ._timeout = timeout
257+ self ._connection_made = asyncio .get_running_loop ().create_future ()
257258 self ._closed = asyncio .get_running_loop ().create_future ()
258259 self ._connection_lost = False
259260
@@ -270,7 +271,13 @@ def close(self, exc: Optional[Exception] = None) -> None:
270271 self ._resolve_pending (exc )
271272 self ._connection_lost = True
272273
274+ def connection_made (self , transport : BaseTransport ) -> None :
275+ super ().connection_made (transport )
276+ self ._connection_made .set_result (None )
277+
273278 def connection_lost (self , exc : Optional [Exception ] = None ) -> None :
279+ if exc is not None and not self ._connection_made .done ():
280+ self ._connection_made .set_exception (exc )
274281 self ._resolve_pending (exc )
275282 if not self ._closed .done ():
276283 self ._closed .set_result (None )
@@ -322,6 +329,7 @@ def connection_made(self, transport: BaseTransport) -> None:
322329 """
323330 self .transport = transport # type: ignore[assignment]
324331 self .transport .set_write_buffer_limits (MAX_MESSAGE_SIZE , MAX_MESSAGE_SIZE )
332+ super ().connection_made (self )
325333
326334 async def read (self , request_id : Optional [int ], max_message_size : int ) -> tuple [bytes , int ]:
327335 """Read a single MongoDB Wire Protocol message from this connection."""
@@ -489,6 +497,7 @@ def connection_made(self, transport: BaseTransport) -> None:
489497 The transport argument is the transport representing the write side of the connection.
490498 """
491499 self .transport = transport # type: ignore[assignment]
500+ super ().connection_made (self )
492501
493502 def data_received (self , data : bytes ) -> None :
494503 if self ._connection_lost :
0 commit comments