Skip to content

Commit 53d5bce

Browse files
authored
call didSendRequest after write future is fullfilled (#65)
1 parent 80cd7ce commit 53d5bce

File tree

1 file changed

+22
-18
lines changed

1 file changed

+22
-18
lines changed

Sources/AsyncHTTPClient/HTTPHandler.swift

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)