You can mess up async/await in C# in exactly 0 ways. Calling .Result is just a bad practice and should never be done.
Async and await in C# may be wonderful to some, but they are horribly broken to others.
I disagree they're broken.
C# 7.1 introduced async main. No reason to call Task.Result in console programs.
Even before that feature arrived, visual studio debugger could resolve that literally in a minute. Press F5, reproduce deadlock, you'll see exactly what's locked and why.