AK
getCacheValue key
|> Option.orElseWith ( fun _ ->
async {
let! newValue = fetchValue key
newValue |> Option.iter (setCacheValue key)
return newValue
} |> Async.RunSynchronously
)
async {
match getCacheValue key with
| Some value -> return (Some value)
| _ ->
let! newValue = fetchValue key
newValue |> Option.iter (setCacheValue key)
return newValue
}


