Not very happy with this code, since it's still deeply nested. However, what's basically implemented here is the async version of a number of nested try-catch blocks.