public void OnSubscribe(IDisposable d)
            {
                upstream = d as IFuseableDisposable <T>;

                if (upstream != null)
                {
                    try
                    {
                        var m = upstream.RequestFusion(boundary ? FusionSupport.AnyBoundary : FusionSupport.Any);
                        if (m != FusionSupport.None)
                        {
                            upstream.IsEmpty();

                            upstream.TryPoll(out var _);

                            upstream.Clear();

                            upstream.IsEmpty();

                            upstream.TryPoll(out var _);

                            try
                            {
                                upstream.TryOffer(default(T));
                            }
                            catch (InvalidOperationException)
                            {
                                // expected
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        error = ex;
                    }
                }
                else
                {
                    error = new Exception("Upstream not fuseable");
                }
            }
 public void Clear()
 {
     queue.Clear();
 }