Example #1
0
 private void Handle(Task <bool> task)
 {
     if (task.IsFaulted)
     {
         if (TryDispose())
         {
             _parent.InnerError(this, task.Exception);
         }
     }
     else
     {
         if (task.Result)
         {
             var v = _source.Current;
             if (TryDispose())
             {
                 _parent.InnerNext(this, v);
                 if (Interlocked.Decrement(ref _outstanding) != 0)
                 {
                     MoveNext();
                 }
             }
         }
         else
         {
             if (TryDispose())
             {
                 _parent.InnerComplete(this);
             }
         }
     }
 }