in Source/Windows/arcana/threading/task_conversions.h [32:53]
auto create_task(const AsyncInfoT& asyncInfo)
{
auto completionSource = arcana::task_completion_source<ResultT, ErrorT>{};
asyncInfo.Completed([completionSource](const AsyncInfoT& sender, const winrt::Windows::Foundation::AsyncStatus status) mutable
{
if (status == winrt::Windows::Foundation::AsyncStatus::Completed)
{
set_completion_source<ErrorT>(completionSource, sender);
}
else if (status == winrt::Windows::Foundation::AsyncStatus::Canceled)
{
completionSource.complete(make_unexpected(std::make_error_code(std::errc::operation_canceled)));
}
else if (status == winrt::Windows::Foundation::AsyncStatus::Error)
{
completionSource.complete(make_unexpected(arcana::error_code_from_hr(sender.ErrorCode())));
}
});
return completionSource.as_task();
}