<PackageReference Include="System.Threading.Tasks.Extensions" Version="4.5.2-servicing-27114-05" />

System.Threading.Tasks.ValueTask<TResult>

public struct ValueTask<TResult> : IEquatable<ValueTask<TResult>>
Provides a value type that wraps a sk{TResult} and a TResultTResult, only one of which is used.
namespace System.Threading.Tasks { public readonly struct ValueTask<TResult> : IEquatable<ValueTask<TResult>> { public bool IsCompleted { get; } public bool IsCompletedSuccessfully { get; } public bool IsFaulted { get; } public bool IsCanceled { get; } public TResult Result { get; } public ValueTask(TResult result); public ValueTask(Task<TResult> task); public ValueTask(IValueTaskSource<TResult> source, short token); public bool Equals(ValueTask<TResult> other); public static bool operator ==(ValueTask<TResult> left, ValueTask<TResult> right); public static bool operator !=(ValueTask<TResult> left, ValueTask<TResult> right); public Task<TResult> AsTask(); public ValueTask<TResult> Preserve(); public ValueTaskAwaiter<TResult> GetAwaiter(); public ConfiguredValueTaskAwaitable<TResult> ConfigureAwait(bool continueOnCapturedContext); } }