>>290です
>>296
コンテキスト・文脈という概念がまだ把握できてないのでそこが課題だと思ってます
>>298
自分は独習C#という本をテキストにして勉強しています。
その中で、>>291のAと似たコードが記載されていて、
これを使ってasync/awaitの基礎が説明されています。
そこで、フォームアプリで真似してみたんです。
デッドロックについてはいろいろ調べてみて基本的な理屈は理解できました。
ただ、Aのコンソールアプリでデッドロックが起きない理由がわかりません。
コンソールアプリはループスレッドではないからとのご指摘が重要だと思っていますが
まだ理解が浅くてモヤモヤしてます。
あと、
>まず、async指定されたメソッドは呼び出されるとメソッド全体を別スレッドとして
起動して・・・
の下りですが、スレッドが3つあると考えればいいのでしょうか?
a.STAスレッド(2のスレッドを呼び出したスレッド)
b.async指定されたメソッドを処理するスレッド
c.client.GetStringAsync(url)を処理するスレッド

これはAのコンソールアプリでも同じですか?
bについては独習C#には書かれていなかったので
aとbは同じスレッドだと思い込んでいました。

調べてみてよく分かったのですが、理解できていない概念が多すぎますね。
今の時点で安易に触ってしまうと変に誤った先入観を持ってしまいそうです
この辺をわかりやすくしっかり説明している書籍等、ご存じないでしょうか?

結論としては
基本的にフォームアプリの中でWaitを使うな
使いたいならConfigureAwait(false)で回避しろ
ということなのかなと思っています