@@ -185,19 +185,29 @@ cdef class UVTransport(UVStream):
185
185
< method_t* > & self ._start_reading,
186
186
self ))
187
187
188
+ if self ._waiter is not None :
189
+ if not self ._waiter.cancelled():
190
+ self ._waiter.set_result(True )
191
+ self ._waiter = None
192
+
188
193
cdef _schedule_call_connection_made(self ):
189
194
self ._loop._call_soon_handle(
190
195
new_MethodHandle(self ._loop,
191
196
" UVTransport._call_connection_made" ,
192
197
< method_t* > & self ._call_connection_made,
193
198
self ))
194
199
200
+ cdef _call_connection_lost(self , exc):
195
201
if self ._waiter is not None :
196
- self ._loop.call_soon(
197
- _set_result_unless_cancelled, self ._waiter, True )
202
+ # This shouldn't ever happen!
203
+ self ._loop.call_exception_handler({
204
+ ' message' : ' waiter is not None in {}._call_connection_lost' .
205
+ format(self .__class__.__name__ )
206
+ })
207
+ if not self ._waiter.done():
208
+ self ._waiter.set_exception(exc)
198
209
self ._waiter = None
199
210
200
- cdef _call_connection_lost(self , exc):
201
211
if self ._closed:
202
212
# The handle is closed -- likely, _call_connection_lost
203
213
# was already called before.
0 commit comments