The HTTP responder sets the state as "responded" as the first line for all send methods, which is wrong. Since there could be exception after that, but before the response is actually written out to the channel. This causes the actual error status not able to be sent from ExceptionHandler through the responder.