cleanup and simplify exceptions with asyncify support