非同期ワークフローの中でTaskってどうやって使うんだろう?と思ってたらAsyncクラスにAwaitaTaskっていうずばりっぽいメソッドがありました。こいつを使えば非同期ワークフローの中でlet!で結果を受け取ることができる。HttpClientを使ってGoogleトップページの情報をとってくるコードはこんな感じになりました。
割といい感じかも。
open System.Net.Http async { use c = new HttpClient() let! r = c.GetAsync("http://www.google.co.jp") |> Async.AwaitTask r.EnsureSuccessStatusCode() |> ignore let! body = r.Content.ReadAsStringAsync() |> Async.AwaitTask printfn "%A" body } |> Async.RunSynchronously