<PackageReference Include="System.Threading.Tasks.Extensions" Version="4.4.0" />

ValueTaskAwaiter<TResult>

using System.Threading.Tasks; namespace System.Runtime.CompilerServices { public struct ValueTaskAwaiter<TResult> : ICriticalNotifyCompletion, INotifyCompletion { private readonly ValueTask<TResult> _value; public bool IsCompleted => _value.IsCompleted; internal ValueTaskAwaiter(ValueTask<TResult> value) { _value = value; } public TResult GetResult() { if (_value._task != null) return _value._task.GetAwaiter().GetResult(); return _value._result; } public void OnCompleted(Action continuation) { _value.AsTask().ConfigureAwait(true).GetAwaiter() .OnCompleted(continuation); } public void UnsafeOnCompleted(Action continuation) { _value.AsTask().ConfigureAwait(true).GetAwaiter() .UnsafeOnCompleted(continuation); } } }