public override int Read(byte[] buffer, int offset, int count)
{
if (streams.Count == 0) {
return 0;
}
var read = streams.Peek().Read(buffer, offset, count);
if (read < count) {
var sndRead = streams.Peek().Read(buffer, offset + read, count - read);
if (sndRead <= 0) {
streams.Dequeue().Dispose();
return read + Read(buffer, offset + read, count - read);
}
read += sndRead;
}
return read;
}