Async, Taskの個人メモ(考え)
async awaitが入っているメソッドは、細かく言えばMainとWorkerで実行されるが、.netでは安全を期するためにそのメソッド全体を非同期メソッドのようなものと判断し、例外が出た場合は別スレッドででたExceptionとして、MainThread側のコールスタックを登らないようにしているのだと思われる.
だからTask.IsFaultedみたいなものを用意して、waitでmainに処理を戻したときにexceptionを受けとれるようにしている.
awaitする前に例外処理吐くコードがあるAsyncメソッドならばローカルメソッドで分離してやれる.