| using Cysharp.Threading.Tasks.Internal; | 
| using System; | 
| using System.Threading; | 
| using Subscribes = Cysharp.Threading.Tasks.Linq.Subscribe; | 
|   | 
| namespace Cysharp.Threading.Tasks.Linq | 
| { | 
|     public static partial class UniTaskAsyncEnumerable | 
|     { | 
|         // OnNext | 
|   | 
|         public static IDisposable Subscribe<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Action<TSource> action) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(action, nameof(action)); | 
|   | 
|             var cts = new CancellationTokenDisposable(); | 
|             Subscribes.SubscribeCore(source, action, Subscribes.NopError, Subscribes.NopCompleted, cts.Token).Forget(); | 
|             return cts; | 
|         } | 
|   | 
|         public static IDisposable Subscribe<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, UniTaskVoid> action) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(action, nameof(action)); | 
|   | 
|             var cts = new CancellationTokenDisposable(); | 
|             Subscribes.SubscribeCore(source, action, Subscribes.NopError, Subscribes.NopCompleted, cts.Token).Forget(); | 
|             return cts; | 
|         } | 
|   | 
|         public static IDisposable Subscribe<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, UniTaskVoid> action) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(action, nameof(action)); | 
|   | 
|             var cts = new CancellationTokenDisposable(); | 
|             Subscribes.SubscribeCore(source, action, Subscribes.NopError, Subscribes.NopCompleted, cts.Token).Forget(); | 
|             return cts; | 
|         } | 
|   | 
|         public static void Subscribe<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Action<TSource> action, CancellationToken cancellationToken) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(action, nameof(action)); | 
|   | 
|             Subscribes.SubscribeCore(source, action, Subscribes.NopError, Subscribes.NopCompleted, cancellationToken).Forget(); | 
|         } | 
|   | 
|         public static void Subscribe<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, UniTaskVoid> action, CancellationToken cancellationToken) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(action, nameof(action)); | 
|   | 
|             Subscribes.SubscribeCore(source, action, Subscribes.NopError, Subscribes.NopCompleted, cancellationToken).Forget(); | 
|         } | 
|   | 
|         public static void Subscribe<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, UniTaskVoid> action, CancellationToken cancellationToken) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(action, nameof(action)); | 
|   | 
|             Subscribes.SubscribeCore(source, action, Subscribes.NopError, Subscribes.NopCompleted, cancellationToken).Forget(); | 
|         } | 
|   | 
|         public static IDisposable SubscribeAwait<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, UniTask> onNext) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|   | 
|             var cts = new CancellationTokenDisposable(); | 
|             Subscribes.SubscribeAwaitCore(source, onNext, Subscribes.NopError, Subscribes.NopCompleted, cts.Token).Forget(); | 
|             return cts; | 
|         } | 
|   | 
|         public static void SubscribeAwait<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, UniTask> onNext, CancellationToken cancellationToken) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|   | 
|             Subscribes.SubscribeAwaitCore(source, onNext, Subscribes.NopError, Subscribes.NopCompleted, cancellationToken).Forget(); | 
|         } | 
|   | 
|         public static IDisposable SubscribeAwait<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, UniTask> onNext) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|   | 
|             var cts = new CancellationTokenDisposable(); | 
|             Subscribes.SubscribeAwaitCore(source, onNext, Subscribes.NopError, Subscribes.NopCompleted, cts.Token).Forget(); | 
|             return cts; | 
|         } | 
|   | 
|         public static void SubscribeAwait<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, UniTask> onNext, CancellationToken cancellationToken) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|   | 
|             Subscribes.SubscribeAwaitCore(source, onNext, Subscribes.NopError, Subscribes.NopCompleted, cancellationToken).Forget(); | 
|         } | 
|   | 
|         // OnNext, OnError | 
|   | 
|         public static IDisposable Subscribe<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Action<TSource> onNext, Action<Exception> onError) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|             Error.ThrowArgumentNullException(onError, nameof(onError)); | 
|   | 
|             var cts = new CancellationTokenDisposable(); | 
|             Subscribes.SubscribeCore(source, onNext, onError, Subscribes.NopCompleted, cts.Token).Forget(); | 
|             return cts; | 
|         } | 
|   | 
|         public static IDisposable Subscribe<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, UniTaskVoid> onNext, Action<Exception> onError) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|             Error.ThrowArgumentNullException(onError, nameof(onError)); | 
|   | 
|             var cts = new CancellationTokenDisposable(); | 
|             Subscribes.SubscribeCore(source, onNext, onError, Subscribes.NopCompleted, cts.Token).Forget(); | 
|             return cts; | 
|         } | 
|   | 
|         public static void Subscribe<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Action<TSource> onNext, Action<Exception> onError, CancellationToken cancellationToken) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|             Error.ThrowArgumentNullException(onError, nameof(onError)); | 
|   | 
|             Subscribes.SubscribeCore(source, onNext, onError, Subscribes.NopCompleted, cancellationToken).Forget(); | 
|         } | 
|   | 
|         public static void Subscribe<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, UniTaskVoid> onNext, Action<Exception> onError, CancellationToken cancellationToken) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|             Error.ThrowArgumentNullException(onError, nameof(onError)); | 
|   | 
|             Subscribes.SubscribeCore(source, onNext, onError, Subscribes.NopCompleted, cancellationToken).Forget(); | 
|         } | 
|   | 
|         public static IDisposable SubscribeAwait<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, UniTask> onNext, Action<Exception> onError) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|             Error.ThrowArgumentNullException(onError, nameof(onError)); | 
|   | 
|             var cts = new CancellationTokenDisposable(); | 
|             Subscribes.SubscribeAwaitCore(source, onNext, onError, Subscribes.NopCompleted, cts.Token).Forget(); | 
|             return cts; | 
|         } | 
|   | 
|         public static void SubscribeAwait<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, UniTask> onNext, Action<Exception> onError, CancellationToken cancellationToken) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|             Error.ThrowArgumentNullException(onError, nameof(onError)); | 
|   | 
|             Subscribes.SubscribeAwaitCore(source, onNext, onError, Subscribes.NopCompleted, cancellationToken).Forget(); | 
|         } | 
|   | 
|         public static IDisposable SubscribeAwait<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, UniTask> onNext, Action<Exception> onError) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|             Error.ThrowArgumentNullException(onError, nameof(onError)); | 
|   | 
|             var cts = new CancellationTokenDisposable(); | 
|             Subscribes.SubscribeAwaitCore(source, onNext, onError, Subscribes.NopCompleted, cts.Token).Forget(); | 
|             return cts; | 
|         } | 
|   | 
|         public static void SubscribeAwait<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, UniTask> onNext, Action<Exception> onError, CancellationToken cancellationToken) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|             Error.ThrowArgumentNullException(onError, nameof(onError)); | 
|   | 
|             Subscribes.SubscribeAwaitCore(source, onNext, onError, Subscribes.NopCompleted, cancellationToken).Forget(); | 
|         } | 
|   | 
|         // OnNext, OnCompleted | 
|   | 
|         public static IDisposable Subscribe<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Action<TSource> onNext, Action onCompleted) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|             Error.ThrowArgumentNullException(onCompleted, nameof(onCompleted)); | 
|   | 
|             var cts = new CancellationTokenDisposable(); | 
|             Subscribes.SubscribeCore(source, onNext, Subscribes.NopError, onCompleted, cts.Token).Forget(); | 
|             return cts; | 
|         } | 
|   | 
|         public static IDisposable Subscribe<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, UniTaskVoid> onNext, Action onCompleted) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|             Error.ThrowArgumentNullException(onCompleted, nameof(onCompleted)); | 
|   | 
|             var cts = new CancellationTokenDisposable(); | 
|             Subscribes.SubscribeCore(source, onNext, Subscribes.NopError, onCompleted, cts.Token).Forget(); | 
|             return cts; | 
|         } | 
|   | 
|         public static void Subscribe<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Action<TSource> onNext, Action onCompleted, CancellationToken cancellationToken) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|             Error.ThrowArgumentNullException(onCompleted, nameof(onCompleted)); | 
|   | 
|             Subscribes.SubscribeCore(source, onNext, Subscribes.NopError, onCompleted, cancellationToken).Forget(); | 
|         } | 
|   | 
|         public static void Subscribe<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, UniTaskVoid> onNext, Action onCompleted, CancellationToken cancellationToken) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|             Error.ThrowArgumentNullException(onCompleted, nameof(onCompleted)); | 
|   | 
|             Subscribes.SubscribeCore(source, onNext, Subscribes.NopError, onCompleted, cancellationToken).Forget(); | 
|         } | 
|   | 
|         public static IDisposable SubscribeAwait<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, UniTask> onNext, Action onCompleted) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|             Error.ThrowArgumentNullException(onCompleted, nameof(onCompleted)); | 
|   | 
|             var cts = new CancellationTokenDisposable(); | 
|             Subscribes.SubscribeAwaitCore(source, onNext, Subscribes.NopError, onCompleted, cts.Token).Forget(); | 
|             return cts; | 
|         } | 
|   | 
|         public static void SubscribeAwait<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, UniTask> onNext, Action onCompleted, CancellationToken cancellationToken) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|             Error.ThrowArgumentNullException(onCompleted, nameof(onCompleted)); | 
|   | 
|             Subscribes.SubscribeAwaitCore(source, onNext, Subscribes.NopError, onCompleted, cancellationToken).Forget(); | 
|         } | 
|   | 
|         public static IDisposable SubscribeAwait<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, UniTask> onNext, Action onCompleted) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|             Error.ThrowArgumentNullException(onCompleted, nameof(onCompleted)); | 
|   | 
|             var cts = new CancellationTokenDisposable(); | 
|             Subscribes.SubscribeAwaitCore(source, onNext, Subscribes.NopError, onCompleted, cts.Token).Forget(); | 
|             return cts; | 
|         } | 
|   | 
|         public static void SubscribeAwait<TSource>(this IUniTaskAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, UniTask> onNext, Action onCompleted, CancellationToken cancellationToken) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(onNext, nameof(onNext)); | 
|             Error.ThrowArgumentNullException(onCompleted, nameof(onCompleted)); | 
|   | 
|             Subscribes.SubscribeAwaitCore(source, onNext, Subscribes.NopError, onCompleted, cancellationToken).Forget(); | 
|         } | 
|   | 
|         // IObserver | 
|   | 
|         public static IDisposable Subscribe<TSource>(this IUniTaskAsyncEnumerable<TSource> source, IObserver<TSource> observer) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(observer, nameof(observer)); | 
|   | 
|             var cts = new CancellationTokenDisposable(); | 
|             Subscribes.SubscribeCore(source, observer, cts.Token).Forget(); | 
|             return cts; | 
|         } | 
|   | 
|         public static void Subscribe<TSource>(this IUniTaskAsyncEnumerable<TSource> source, IObserver<TSource> observer, CancellationToken cancellationToken) | 
|         { | 
|             Error.ThrowArgumentNullException(source, nameof(source)); | 
|             Error.ThrowArgumentNullException(observer, nameof(observer)); | 
|   | 
|             Subscribes.SubscribeCore(source, observer, cancellationToken).Forget(); | 
|         } | 
|     } | 
|   | 
|     internal sealed class CancellationTokenDisposable : IDisposable | 
|     { | 
|         readonly CancellationTokenSource cts = new CancellationTokenSource(); | 
|   | 
|         public CancellationToken Token => cts.Token; | 
|   | 
|         public void Dispose() | 
|         { | 
|             if (!cts.IsCancellationRequested) | 
|             { | 
|                 cts.Cancel(); | 
|             } | 
|         } | 
|     } | 
|   | 
|     internal static class Subscribe | 
|     { | 
|         public static readonly Action<Exception> NopError = _ => { }; | 
|         public static readonly Action NopCompleted = () => { }; | 
|   | 
|         public static async UniTaskVoid SubscribeCore<TSource>(IUniTaskAsyncEnumerable<TSource> source, Action<TSource> onNext, Action<Exception> onError, Action onCompleted, CancellationToken cancellationToken) | 
|         { | 
|             var e = source.GetAsyncEnumerator(cancellationToken); | 
|             try | 
|             { | 
|                 while (await e.MoveNextAsync()) | 
|                 { | 
|                     try | 
|                     { | 
|                         onNext(e.Current); | 
|                     } | 
|                     catch (Exception ex) | 
|                     { | 
|                         UniTaskScheduler.PublishUnobservedTaskException(ex); | 
|                     } | 
|                 } | 
|                 onCompleted(); | 
|             } | 
|             catch (Exception ex) | 
|             { | 
|                 if (onError == NopError) | 
|                 { | 
|                     UniTaskScheduler.PublishUnobservedTaskException(ex); | 
|                     return; | 
|                 } | 
|   | 
|                 if (ex is OperationCanceledException) return; | 
|   | 
|                 onError(ex); | 
|             } | 
|             finally | 
|             { | 
|                 if (e != null) | 
|                 { | 
|                     await e.DisposeAsync(); | 
|                 } | 
|             } | 
|         } | 
|   | 
|         public static async UniTaskVoid SubscribeCore<TSource>(IUniTaskAsyncEnumerable<TSource> source, Func<TSource, UniTaskVoid> onNext, Action<Exception> onError, Action onCompleted, CancellationToken cancellationToken) | 
|         { | 
|             var e = source.GetAsyncEnumerator(cancellationToken); | 
|             try | 
|             { | 
|                 while (await e.MoveNextAsync()) | 
|                 { | 
|                     try | 
|                     { | 
|                         onNext(e.Current).Forget(); | 
|                     } | 
|                     catch (Exception ex) | 
|                     { | 
|                         UniTaskScheduler.PublishUnobservedTaskException(ex); | 
|                     } | 
|                 } | 
|                 onCompleted(); | 
|             } | 
|             catch (Exception ex) | 
|             { | 
|                 if (onError == NopError) | 
|                 { | 
|                     UniTaskScheduler.PublishUnobservedTaskException(ex); | 
|                     return; | 
|                 } | 
|   | 
|                 if (ex is OperationCanceledException) return; | 
|   | 
|                 onError(ex); | 
|             } | 
|             finally | 
|             { | 
|                 if (e != null) | 
|                 { | 
|                     await e.DisposeAsync(); | 
|                 } | 
|             } | 
|         } | 
|   | 
|         public static async UniTaskVoid SubscribeCore<TSource>(IUniTaskAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, UniTaskVoid> onNext, Action<Exception> onError, Action onCompleted, CancellationToken cancellationToken) | 
|         { | 
|             var e = source.GetAsyncEnumerator(cancellationToken); | 
|             try | 
|             { | 
|                 while (await e.MoveNextAsync()) | 
|                 { | 
|                     try | 
|                     { | 
|                         onNext(e.Current, cancellationToken).Forget(); | 
|                     } | 
|                     catch (Exception ex) | 
|                     { | 
|                         UniTaskScheduler.PublishUnobservedTaskException(ex); | 
|                     } | 
|                 } | 
|                 onCompleted(); | 
|             } | 
|             catch (Exception ex) | 
|             { | 
|                 if (onError == NopError) | 
|                 { | 
|                     UniTaskScheduler.PublishUnobservedTaskException(ex); | 
|                     return; | 
|                 } | 
|   | 
|                 if (ex is OperationCanceledException) return; | 
|   | 
|                 onError(ex); | 
|             } | 
|             finally | 
|             { | 
|                 if (e != null) | 
|                 { | 
|                     await e.DisposeAsync(); | 
|                 } | 
|             } | 
|         } | 
|   | 
|         public static async UniTaskVoid SubscribeCore<TSource>(IUniTaskAsyncEnumerable<TSource> source, IObserver<TSource> observer, CancellationToken cancellationToken) | 
|         { | 
|             var e = source.GetAsyncEnumerator(cancellationToken); | 
|             try | 
|             { | 
|                 while (await e.MoveNextAsync()) | 
|                 { | 
|                     try | 
|                     { | 
|                         observer.OnNext(e.Current); | 
|                     } | 
|                     catch (Exception ex) | 
|                     { | 
|                         UniTaskScheduler.PublishUnobservedTaskException(ex); | 
|                     } | 
|                 } | 
|                 observer.OnCompleted(); | 
|             } | 
|             catch (Exception ex) | 
|             { | 
|                 if (ex is OperationCanceledException) return; | 
|   | 
|                 observer.OnError(ex); | 
|             } | 
|             finally | 
|             { | 
|                 if (e != null) | 
|                 { | 
|                     await e.DisposeAsync(); | 
|                 } | 
|             } | 
|         } | 
|   | 
|         public static async UniTaskVoid SubscribeAwaitCore<TSource>(IUniTaskAsyncEnumerable<TSource> source, Func<TSource, UniTask> onNext, Action<Exception> onError, Action onCompleted, CancellationToken cancellationToken) | 
|         { | 
|             var e = source.GetAsyncEnumerator(cancellationToken); | 
|             try | 
|             { | 
|                 while (await e.MoveNextAsync()) | 
|                 { | 
|                     try | 
|                     { | 
|                         await onNext(e.Current); | 
|                     } | 
|                     catch (Exception ex) | 
|                     { | 
|                         UniTaskScheduler.PublishUnobservedTaskException(ex); | 
|                     } | 
|                 } | 
|                 onCompleted(); | 
|             } | 
|             catch (Exception ex) | 
|             { | 
|                 if (onError == NopError) | 
|                 { | 
|                     UniTaskScheduler.PublishUnobservedTaskException(ex); | 
|                     return; | 
|                 } | 
|   | 
|                 if (ex is OperationCanceledException) return; | 
|   | 
|                 onError(ex); | 
|             } | 
|             finally | 
|             { | 
|                 if (e != null) | 
|                 { | 
|                     await e.DisposeAsync(); | 
|                 } | 
|             } | 
|         } | 
|   | 
|         public static async UniTaskVoid SubscribeAwaitCore<TSource>(IUniTaskAsyncEnumerable<TSource> source, Func<TSource, CancellationToken, UniTask> onNext, Action<Exception> onError, Action onCompleted, CancellationToken cancellationToken) | 
|         { | 
|             var e = source.GetAsyncEnumerator(cancellationToken); | 
|             try | 
|             { | 
|                 while (await e.MoveNextAsync()) | 
|                 { | 
|                     try | 
|                     { | 
|                         await onNext(e.Current, cancellationToken); | 
|                     } | 
|                     catch (Exception ex) | 
|                     { | 
|                         UniTaskScheduler.PublishUnobservedTaskException(ex); | 
|                     } | 
|                 } | 
|                 onCompleted(); | 
|             } | 
|             catch (Exception ex) | 
|             { | 
|                 if (onError == NopError) | 
|                 { | 
|                     UniTaskScheduler.PublishUnobservedTaskException(ex); | 
|                     return; | 
|                 } | 
|   | 
|                 if (ex is OperationCanceledException) return; | 
|   | 
|                 onError(ex); | 
|             } | 
|             finally | 
|             { | 
|                 if (e != null) | 
|                 { | 
|                     await e.DisposeAsync(); | 
|                 } | 
|             } | 
|         } | 
|   | 
|     } | 
| } |