read method
Reads data from the stream
Implementation
@override
Future<Uint8List> read([int? maxLength]) async {
while (true) {
if (_reset != null) throw _reset!;
if (_readQueue.isNotEmpty) return _take(maxLength);
if (_remoteFin || _localReadClosed || _channelClosed) return Uint8List(0);
final readable = _readable ??= Completer<void>();
final deadline = _readDeadline;
if (deadline == null) {
await readable.future;
} else {
final remaining = deadline.difference(DateTime.now());
if (remaining <= Duration.zero) throw TimeoutException('read deadline exceeded');
await readable.future.timeout(remaining, onTimeout: () {
throw TimeoutException('read deadline exceeded');
});
}
}
}