@@ -41,7 +41,7 @@ module AsyncVal =
4141 match x with
4242 | Value v -> v
4343 | Async a -> a |> Async.RunSynchronously
44- | Failure f -> raise f
44+ | Failure f -> f.Reraise ()
4545
4646 /// Create new AsyncVal from Async computation.
4747 let inline ofAsync ( a : Async < 'T >) = Async( a)
@@ -54,7 +54,7 @@ module AsyncVal =
5454 match x with
5555 | Value v -> async.Return v
5656 | Async a -> a
57- | Failure f -> async.Return ( raise f )
57+ | Failure f -> async.Return ( f.Reraise () )
5858
5959 /// Returns an empty AsyncVal with immediatelly executed value.
6060 let inline empty < 'T > : AsyncVal < 'T > = AsyncVal< 'T>. Zero
@@ -111,7 +111,7 @@ module AsyncVal =
111111 match bound with
112112 | Value v -> return v
113113 | Async a -> return ! a
114- | Failure f -> return raise f
114+ | Failure f -> return f.Reraise ()
115115 })
116116 | Failure f -> Failure( f)
117117
@@ -133,7 +133,7 @@ module AsyncVal =
133133 let! r = a
134134 results.[ i] <- r
135135 | Failure f ->
136- results.[ i] <- raise f
136+ results.[ i] <- f.Reraise ()
137137 return results })
138138 else Value ( values |> Array.map ( fun ( Value v ) -> v))
139139
@@ -156,7 +156,7 @@ module AsyncVal =
156156 indexes.Add i
157157 continuations.Add a
158158 | Failure f ->
159- results.[ i] <- raise f
159+ results.[ i] <- f.Reraise ()
160160 if indexes.Count = 0
161161 then Value( results)
162162 else Async( async {
@@ -193,7 +193,7 @@ type AsyncValBuilder () =
193193 match bound with
194194 | Value v -> return v
195195 | Async a -> return ! a
196- | Failure f -> return raise f })
196+ | Failure f -> return f.Reraise () })
197197
198198
199199[<AutoOpen>]
0 commit comments