Handle C# async await exceptions the right way