public override async Task <int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) { if (count == 0) { return(0); } if (_reader == null) { if (_message.Properties.ContainsKey(BufferedReadStream.BufferedReadStreamPropertyName)) { _bufferedReadStream = _message.Properties[BufferedReadStream.BufferedReadStreamPropertyName] as BufferedReadStream; } } using (TaskHelpers.RunTaskContinuationsOnOurThreads()) { if (_bufferedReadStream != null) { await _bufferedReadStream.PreReadBufferAsync(cancellationToken); } return(Read(buffer, offset, count)); } }