Apariencia
Esperar una operación asíncrona
Un único valor obtenido de forma asíncrona se representa con Task<Result<T>>. Primero espera la tarea; después comprueba el resultado.
csharp
using Greencore.Platform.Errors;
using Greencore.Platform.Results;
using Greencore.Platform.Results.Extensions;
var resultado = await LeerAsync(CancellationToken.None);
var texto = await resultado.MapAsync(valor => Task.FromResult($"Valor: {valor}"));
Console.WriteLine(texto.Value);
static async Task<Result<int>> LeerAsync(CancellationToken token)
{
await Task.Delay(10, token);
return Result<int>.Ok(12);
}Para una operación sin valor utiliza Task<VoidResult>. Una secuencia que entrega elementos durante la lectura usa AsyncEnumerableResult.
Componer después de esperar
MapAsync, BindAsync y MatchAsync reciben funciones que devuelven Task. Se aplican al resultado, no directamente a Task<Result<T>>.
Pasa la cancelación a la operación dentro de la función, por ejemplo valor => ConsultarAsync(valor, token). Las excepciones y la cancelación se propagan: las extensiones no las convierten en errores.
Recuerda: esperar la tarea y comprobar el resultado son dos pasos distintos.