I'm not sure I see why it matters which router's code catches and logs the exception.  But if it makes a difference to the router, couldn't it override send_to_backend?  All it does is lookup a backend and call .send() on it, so it's not a lot to redo. And we could move the backend lookup out of send_to_backend if that wouldn't break backward compatibility.