This is sometimes useful, if the function is applied to entries in a vector or list.

async_reflect(task)

Arguments

task

Function to transform.

Value

Async function returning a deferred value that is never rejected. Instead its value is a list with entries error and result. If the original deferred was resolved, then error is NULL. If the original deferred was rejected, then result is NULL.

See also

Examples

 badfun <- async(function() stop("oh no!"))
 safefun <- async_reflect(badfun)
 synchronise(when_all(safefun(), "good"))
#> [[1]]
#> [[1]]$error
#> <async error: oh no!
#>  in *action* callback of `deferred$new` at ?/?:?:?>
#> [[1]]$result
#> NULL
#> 
#> 
#> [[2]]
#> [1] "good"
#>