open System.Threading.Tasks type AsyncBuilder with member x.Bind(t:Task<'T>, f:'T -> Async<'R>) : Async<'R> = async.Bind(Async.AwaitTask t, f) member x.Bind(t:Task, f:unit -> Async<'R>) : Async<'R> = async.Bind(Async.AwaitTask t, f) let task = Unchecked.defaultof> let foo = async { do! task } // type checks!