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