public static IUniTaskOrderedAsyncEnumerable <TSource> ThenByDescendingAwait <TSource, TKey>(
            this IUniTaskOrderedAsyncEnumerable <TSource> source, Func <TSource, UniTask <TKey> > keySelector)
        {
            Error.ThrowArgumentNullException(source, nameof(source));
            Error.ThrowArgumentNullException(keySelector, nameof(keySelector));

            return(source.CreateOrderedEnumerable(keySelector, Comparer <TKey> .Default, true));
        }
        public static IUniTaskOrderedAsyncEnumerable <TSource> ThenByAwaitWithCancellation <TSource, TKey>(
            this IUniTaskOrderedAsyncEnumerable <TSource> source,
            Func <TSource, CancellationToken, UniTask <TKey> > keySelector)
        {
            Error.ThrowArgumentNullException(source, nameof(source));
            Error.ThrowArgumentNullException(keySelector, nameof(keySelector));

            return(source.CreateOrderedEnumerable(keySelector, Comparer <TKey> .Default, false));
        }
        public static IUniTaskOrderedAsyncEnumerable <TSource> ThenByAwait <TSource, TKey>(
            this IUniTaskOrderedAsyncEnumerable <TSource> source, Func <TSource, UniTask <TKey> > keySelector,
            IComparer <TKey> comparer)
        {
            Error.ThrowArgumentNullException(source, nameof(source));
            Error.ThrowArgumentNullException(keySelector, nameof(keySelector));
            Error.ThrowArgumentNullException(comparer, nameof(comparer));

            return(source.CreateOrderedEnumerable(keySelector, comparer, false));
        }