DotNext.Reflection by Roman Sakno

<PackageReference Include="DotNext.Reflection" Version="2.11.1" />

 Awaitable<T, TAwaiter, TResult>

public struct Awaitable<T, TAwaiter, TResult> where TAwaiter : ICriticalNotifyCompletion
Represents awaitable concept type for the task type with non-void result.
public Awaitable(T awaitable)

Wraps value of type T into awaitable value compatible with await expression.

public static TAwaiter GetAwaiter(ref T obj)

Gets awaiter used to await asynchronous result represented by type T.

public static T op_Implicit(ref Awaitable awaitable)

Gets underlying awaitable object.

public Awaiter<TAwaiter, TResult> GetAwaiter()

Gets awaiter used to await asynchronous result represented by type T.