@@ -465,26 +465,30 @@ internal class TaskHandler<T: HTTPClientResponseDelegate>: ChannelInboundHandler
465
465
self . delegate. didSendRequestHead ( task: self . task, head)
466
466
}
467
467
468
- self . writeBody ( request: request, context: context) . whenComplete { result in
469
- switch result {
470
- case . success:
471
- context. write ( self . wrapOutboundOut ( . end( nil ) ) , promise: promise)
472
- context. flush ( )
473
-
474
- self . state = . sent
475
- self . delegate. didSendRequest ( task: self . task)
476
-
477
- let channel = context. channel
478
- self . task. futureResult. whenComplete { _ in
479
- channel. close ( promise: nil )
468
+ self . writeBody ( request: request, context: context)
469
+ . flatMap {
470
+ context. writeAndFlush ( self . wrapOutboundOut ( . end( nil ) ) )
471
+ }
472
+ . whenComplete { result in
473
+ switch result {
474
+ case . success:
475
+ self . state = . sent
476
+ self . delegate. didSendRequest ( task: self . task)
477
+ promise? . succeed ( ( ) )
478
+
479
+ let channel = context. channel
480
+ self . task. futureResult. whenComplete { _ in
481
+ channel. close ( promise: nil )
482
+ }
483
+ case . failure( let error) :
484
+ self . state = . end
485
+ self . delegate. didReceiveError ( task: self . task, error)
486
+ promise? . fail ( error)
487
+
488
+ self . task. fail ( error)
489
+ context. close ( promise: nil )
480
490
}
481
- case . failure( let error) :
482
- self . state = . end
483
- self . delegate. didReceiveError ( task: self . task, error)
484
- self . task. fail ( error)
485
- context. close ( promise: nil )
486
491
}
487
- }
488
492
}
489
493
490
494
private func writeBody( request: HTTPClient . Request , context: ChannelHandlerContext ) -> EventLoopFuture < Void > {
0 commit comments