public void AddFirstPromiseRetained()
        {
            writeQueue.Add(cat, catPromise);
            AssertQueueSize(3, false);
            writeQueue.Add(mouse, NewFutureListener());
            AssertQueueSize(8, false);
            IPromise aggregatePromise = NewPromise();

            Assert.Equal("catmous", Dequeue(7, aggregatePromise));
            IByteBuffer remainder = Unpooled.WrappedBuffer(Encoding.ASCII.GetBytes("mous"));

            writeQueue.AddFirst(remainder, aggregatePromise);
            IPromise aggregatePromise2 = NewPromise();

            Assert.Equal("mouse", Dequeue(5, aggregatePromise2));
            aggregatePromise2.Complete();
            Assert.True(catPromise.IsSuccess);
            Assert.True(mouseSuccess);
            Assert.Equal(0, cat.ReferenceCount);
            Assert.Equal(0, mouse.ReferenceCount);
        }