Skip to content

Commit c3ce3cb

Browse files
gustywallymathieu
authored andcommitted
+ (Value)Task.mapError
1 parent 4d0524f commit c3ce3cb

2 files changed

Lines changed: 10 additions & 3 deletions

File tree

src/FSharpPlus/Extensions/Task.fs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,7 @@ module Task =
487487
let inline recover ([<InlineIfLambda>]mapper: exn -> 'T) (source: Task<'T>) : Task<'T> =
488488
let source = nullArgCheck (nameof source) source
489489

490-
tryWith (fun () -> source) (mapper >> Task.FromResult)
490+
tryWith (fun () -> source) (mapper >> Task.FromResult)
491491
#else
492492
let inline recover (mapper: exn -> 'T) (source: Task<'T>) : Task<'T> =
493493
raiseIfNull "source" source
@@ -500,6 +500,7 @@ module Task =
500500
/// <param name="source">The source task.</param>
501501
/// <returns>The resulting task.</returns>
502502
let mapError (mapper: exn -> exn) (source: Task<'T>) : Task<'T> =
503+
503504
#if !NET45
504505
let source = nullArgCheck (nameof source) source
505506
#else

src/FSharpPlus/Extensions/ValueTask.fs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -401,13 +401,19 @@ module ValueTask =
401401
/// <param name="mapper">Mapping function from exception to exception.</param>
402402
/// <param name="source">The source task.</param>
403403
/// <returns>The resulting task.</returns>
404-
let inline mapError ([<InlineIfLambda>]mapper: exn -> exn) (source: ValueTask<'T>) : ValueTask<'T> =
404+
let mapError (mapper: exn -> exn) (source: ValueTask<'T>) : ValueTask<'T> =
405405
if source.IsCompleted then
406406
match source with
407407
| Faulted exn -> FromExceptions (AggregateException (mapper exn))
408408
| _ -> source
409409
else
410-
let tcs = TaskCompletionSource<'T> tcsOptions
410+
#if NET5_0_OR_GREATER
411+
let tcsOptions' = TaskCreationOptions.RunContinuationsAsynchronously
412+
#else
413+
let tcsOptions' = ()
414+
#endif
415+
416+
let tcs = TaskCompletionSource<'T> tcsOptions'
411417
let k = function
412418
| Succeeded r -> tcs.SetResult r
413419
| Faulted aex -> tcs.SetException (AggregateException (mapper aex)).InnerExceptions

0 commit comments

Comments
 (0)