I have come across a few Handlers that dispatch to a worker thread these include blocking handler, resource handler and the form parsing handler.

My specific use case was with the form parsing handler.  I had a bunch of handlers chained together basically as follows.

Blocking handler -> ExceptionHandler -> FormParsingHandler -> MyBlockingHandler

The form parsing handler would cause the handler to be dispatched a second time to a new executor.  This made me lose the stack trace, and the Exception handler was not catching an exception being thrown inside of MyBlockingHandler.

I resolved this by basically cloning the form parsing handler and calling the parseBlocking() instead of the non blocking parse().  This is acceptable because I already dispatched to a non IO thread.

Should any handler that attempts to dispatch first check if the exchange is in an IO thread before dispatching or is there a specific use case for some handlers to always dispatch?