Async/await
asyncなしで宣言されたTaskまたはTask<T>戻り値の型を持つメソッドをawaitすることもできる。
次の非同期メソッドは、awaitを使用してURLからデータをダウンロードする。
注意: C#コンパイラのawait対応正式版リリース時から、出力されるコードはステートマシンによる実行効率性の高いコードを生成するように実装されている。そのため、冒頭で示した、promiseをTask.ContinueWith(...)によって継続させる疑似コードの議論は、現実のC#コンパイラには当てはまらない。また、ステートマシンは、コンパイラに完全にハードコーディングされているわけではなく、AsyncStateMachineAttribute属性を使用して、ライブラリ提供者が独自のステートマシンを提供できる拡張ポイントを有している。ValueTaskなどの、より軽量なpromiseと対応するステートマシンは、この機能を使用して実装されている。