More robust - and slightly more structured - async error handling