fetchStream method
Returns a cached stream from a previous call to fetchStream, or runs
callback to compute a new stream.
If fetchStream has been called recently enough, returns a copy of its
previous return value. Otherwise, runs callback and returns its new
return value.
Implementation
Stream<T> fetchStream(Stream<T> callback()) {
  if (_cachedValueFuture != null) {
    throw new StateError('Previously used to cache via `fetch`');
  }
  if (_cachedStreamSplitter == null) {
    _cachedStreamSplitter = new StreamSplitter(callback()
        .transform(new StreamTransformer.fromHandlers(handleDone: (sink) {
      _startStaleTimer();
      sink.close();
    })));
  }
  return _cachedStreamSplitter.split();
}