@@ -468,26 +468,30 @@ internal class TaskHandler<T: HTTPClientResponseDelegate>: ChannelInboundHandler
468468 self . delegate. didSendRequestHead ( task: self . task, head)
469469 }
470470
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 )
483493 }
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 )
489494 }
490- }
491495 }
492496
493497 private func writeBody( request: HTTPClient . Request , context: ChannelHandlerContext ) -> EventLoopFuture < Void > {
0 commit comments