Cómo esperar un ValueTask de forma síncrona en un método no asíncrono sin asignar memoria
Comprueba primero IsCompleted y lee el resultado con GetAwaiter().GetResult(), lo que cuesta 0 bytes. Recurre al bloqueo solo cuando el ValueTask sigue pendiente, y hazlo con un evento en caché y UnsafeOnCompleted en lugar de AsTask(), que asigna entre 72 y 208 bytes por llamada. Medido en .NET 10 y .NET 11 RC1.