private Task SafeExecuteOutboundAsync(Func<Task> function)
{
var promise = new TaskCompletionSource();
try
{
Executor.Execute((p, func) => ((Func<Task>) func)().LinkOutcome((TaskCompletionSource) p), promise,
function);
}
catch (Exception cause)
{
promise.TrySetException(cause);
}
return promise.Task;
}