Implement AsyncExceptionHandler, update other classes to use it, and fix an incorrect propogation into Python land