public void Dispose_aborts_pending_read()
        {
            var stream   = new LoopbackTcpStream();
            var readTask = stream.ReadAsync(new byte[1], 0, 1);

            stream.Dispose();
            readTask.Awaiting(t => t).Should().Throw <Exception>();
        }
        public async Task Staging_bytes_makes_them_available_in_async_read()
        {
            using (var stream = new LoopbackTcpStream())
            {
                stream.StageReadBytes(1, 2, 3);
                var buffer    = new byte[10];
                var readBytes = await stream.ReadAsync(buffer, 0, 3).ConfigureAwait(true);

                readBytes.Should().Be(3);
                buffer.Take(3).Should().Equal(1, 2, 3);
            }
        }