Como aguardar um ValueTask de forma síncrona em um método não assíncrono sem alocar memória
Verifique IsCompleted primeiro e leia o resultado com GetAwaiter().GetResult(), que custa 0 bytes. Só recorra ao bloqueio quando o ValueTask ainda estiver pendente, e faça isso com um evento em cache e UnsafeOnCompleted em vez de AsTask(), que aloca de 72 a 208 bytes por chamada. Medido no .NET 10 e no .NET 11 RC1.