Почему awaiters (GetAwaiter - создавать класс, ожидаемые), а не классы. Не вредит ли вам использование класса?
public struct ConfiguredTaskAwaiter : ICriticalNotifyCompletion:
public struct YieldAwaiter : ICriticalNotifyCompletion:
public struct TaskAwaiter<TResult> : ICriticalNotifyCompletion