[#1046] Make sure HttpContentEncoder calls ByteBuf.retain() if needed
[#1047] Not process with flush on failure
[#1048] Make sure the promise is not notified multiple times on failure