Skip to content

Instantly share code, notes, and snippets.

@TheAngryByrd
Created October 27, 2021 19:17
Show Gist options
  • Save TheAngryByrd/32701116c4fe25ca80e64424044a9b73 to your computer and use it in GitHub Desktop.
Save TheAngryByrd/32701116c4fe25ca80e64424044a9b73 to your computer and use it in GitHub Desktop.
AsyncToTaskHelpers
type AsyncBuilder with
member inline __.Bind(t : Task<'a>, cont) = async.Bind(t |> Async.AwaitTask, cont)
member inline __.Bind(t : Task, cont) = async.Bind(t |> Async.AwaitTask, cont)
member inline __.ReturnFrom(t : Task<'a>) = async.ReturnFrom(t |> Async.AwaitTask)
member inline __.ReturnFrom(t : Task) = async.ReturnFrom(t |> Async.AwaitTask)
member inline __.Bind(t : ValueTask<'a>, cont) = async.Bind(t.AsTask() |> Async.AwaitTask, cont)
member inline __.Bind(t : ValueTask, cont) = async.Bind(t.AsTask() |> Async.AwaitTask, cont)
member inline __.ReturnFrom(t : ValueTask<'a>) = async.ReturnFrom(t.AsTask() |> Async.AwaitTask)
member inline __.ReturnFrom(t : ValueTask) = async.ReturnFrom(t.AsTask() |> Async.AwaitTask)
member inline __.Bind(t : CancellationToken -> Task<'a>, cont) = async {
let! ct = Async.CancellationToken
return! __.Bind(t ct, cont)
}
member inline __.Bind(t : CancellationToken -> Task, cont) = async {
let! ct = Async.CancellationToken
return! __.Bind(t ct, cont)
}
member inline __.ReturnFrom(t : CancellationToken -> Task<'a>) = async {
let! ct = Async.CancellationToken
return! t ct
}
member inline __.ReturnFrom(t : CancellationToken -> Task) = async {
let! ct = Async.CancellationToken
return! t ct
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment