Skip to content

Instantly share code, notes, and snippets.

@davidgrenier
Created November 26, 2014 22:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save davidgrenier/99ff6914cd68d48d62bf to your computer and use it in GitHub Desktop.
Save davidgrenier/99ff6914cd68d48d62bf to your computer and use it in GitHub Desktop.
let await (timeout: int) task =
async {
let evt = Event<_>()
let! _ =
async {
do! Async.Sleep timeout
evt.Trigger None
} |> Async.StartChild
let! _ =
async {
let! result = task
evt.Trigger (Some result)
} |> Async.StartChild
return!
evt.Publish
|> Async.AwaitEvent
}
async {
do! Async.Sleep 10
printfn "test"
return 9
}
|> await 100
|> Async.RunSynchronously
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment