public static UniTask.Awaiter GetAwaiter <T>(this T enumerator)
            where T : IEnumerator
        {
            var e = (IEnumerator)enumerator;

            Error.ThrowArgumentNullException(e, nameof(enumerator));
            return(new UniTask(EnumeratorPromise.Create(e, PlayerLoopTiming.Update, CancellationToken.None, out var token), token).GetAwaiter());
        }
 public static UniTask ToUniTask(this IEnumerator enumerator, PlayerLoopTiming timing = PlayerLoopTiming.Update, CancellationToken cancellationToken = default(CancellationToken))
 {
     Error.ThrowArgumentNullException(enumerator, nameof(enumerator));
     return(new UniTask(EnumeratorPromise.Create(enumerator, timing, cancellationToken, out var token), token));
 }