Make sure when there is exception when consuming body through BodyConsumer, only the BodyConsumer.handleError is called and no call to chunk or finish afterwards. It happened when the handleError method itself throw Exception, and the next HttpChunk arrives and triggered chunk/finish before the exception handled by the netty framework asynchronously.