@@ -199,6 +199,7 @@ impl<
199199 }
200200
201201 pub ( crate ) fn start ( mut self ) -> Result < JoinHandle > {
202+ let runtime = self . runtime . clone ( ) ;
202203 let waker = self . socket_state . handle ( ) ;
203204 let connect_span = tracing:: Span :: current ( ) ;
204205 let handle = ThreadBuilder :: new ( )
@@ -270,7 +271,7 @@ impl<
270271 error ! ( ?err, "Failed to close IO stream" ) ;
271272 }
272273 res
273- } ) . map_err ( Error :: io) ?;
274+ } ) . map_err ( |err| Error :: io ( err , & runtime ) ) ?;
274275 waker. wake ( ) ;
275276 Ok ( handle)
276277 }
@@ -391,7 +392,9 @@ impl<
391392 stream : Pin < & mut T > ,
392393 writable_context : & mut Context < ' _ > ,
393394 ) -> Result < ( ) > {
394- let res = stream. poll_flush ( writable_context) . map_err ( Error :: io) ?;
395+ let res = stream
396+ . poll_flush ( writable_context)
397+ . map_err ( |err| Error :: io ( err, & self . runtime ) ) ?;
395398 self . socket_state . handle_write_poll ( res) ;
396399 Ok ( ( ) )
397400 }
@@ -440,7 +443,7 @@ impl<
440443 let res = self
441444 . send_buffer
442445 . poll_write_to ( writable_context, stream. as_mut ( ) )
443- . map_err ( Error :: io) ?;
446+ . map_err ( |err| Error :: io ( err , & self . runtime ) ) ?;
444447
445448 if let Some ( sz) = self . socket_state . handle_write_poll ( res) {
446449 if sz > 0 {
@@ -499,7 +502,7 @@ impl<
499502 let res = self
500503 . receive_buffer
501504 . poll_read_from ( readable_context, stream)
502- . map_err ( Error :: io) ?;
505+ . map_err ( |err| Error :: io ( err , & self . runtime ) ) ?;
503506
504507 if let Some ( sz) = self . socket_state . handle_read_poll ( res) {
505508 if sz > 0 {
@@ -540,7 +543,7 @@ impl<
540543 return Ok ( true ) ;
541544 }
542545 self . socket_state
543- . handle_io_result ( Err ( Error :: io ( io:: ErrorKind :: ConnectionAborted . into ( ) ) ) ) ?;
546+ . handle_io_result ( Err ( io :: Error :: from ( io:: ErrorKind :: ConnectionAborted ) . into ( ) ) ) ?;
544547 Ok ( false )
545548 }
546549
0 commit comments