When you have an OnException it should overlay its configuration with the existing error handler (so its kinda of merge). However we mistakenly set the handled policy from the OnException always, and dont honor the setting from the error handler. So in case of DeadLetterChannel which always handle the exception, it will cause the exception to not be handled and thus rethrown in Camel.
This problem is only apparent when using the DLC as its the only error handler that handles and moves the exchange to the DLC. The other error handler will log or the likes, but still keep the exception on the exchange to propagated back the exception to the caller.
So we only noticed this when testing with DLC, and what Hadrian was trying to do in