fetch method
Returns a cached value from a previous call to fetch, or runs callback
to compute a new one.
If fetch has been called recently enough, returns its previous return
value. Otherwise, runs callback
and returns its new return value.
Implementation
Future<T> fetch(Future<T> callback()) async {
if (_cachedStreamSplitter != null) {
throw new StateError('Previously used to cache via `fetchStream`');
}
if (_cachedValueFuture == null) {
_cachedValueFuture = callback();
await _cachedValueFuture;
_startStaleTimer();
}
return _cachedValueFuture;
}