Deprecate `AsyncCache.fetchStream`. (#209)

* Deprecate `AsyncCache.fetchStream`.

The feature complicates the `AsyncCache` class, and would be a better fit
for a separate class.
The functionality is not great. Since it returns the "same" stream
each time the cache is queried (until evaluated), it actually
caches all stream events
The invalidation is tricky because the timer doesn't start until
you *listen* to the stream. In practice, people will usually
listen to the stream they fetch.

It also seems that no-one ever used the functionality.
There is no use inside Google, or in [Github](https://github.com/search?q=%22.fetchStream%22+language%3ADart+-filename%3Aasync_cache.dart+-filename%3Aasync_cache_test.dart&type=code),
outside of the package's own tests.

It's a better fit for a separate class, but it also appears to not be used anywhere
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0086e7b..1315bdc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,8 @@
 * Update `StreamGroup` methods that return a `Future<dynamic>` today to return
   a `Future<void>` instead.
 
+* Deprecated `AsyncCache.fetchStream`.
+
 * Make `AsyncCache.ephemeral` invalidate itself immediately when the returned
   future completes, rather than wait for a later timer event.
 
diff --git a/lib/src/async_cache.dart b/lib/src/async_cache.dart
index be7434f..b055182 100644
--- a/lib/src/async_cache.dart
+++ b/lib/src/async_cache.dart
@@ -31,7 +31,7 @@
   /// future completes.
   final Duration? _duration;
 
-  /// Cached results of a previous [fetchStream] call.
+  /// Cached results of a previous `fetchStream` call.
   StreamSplitter<T>? _cachedStreamSplitter;
 
   /// Cached results of a previous [fetch] call.
@@ -43,7 +43,7 @@
   /// Creates a cache that invalidates its contents after [duration] has passed.
   ///
   /// The [duration] starts counting after the Future returned by [fetch]
-  /// completes, or after the Stream returned by [fetchStream] emits a done
+  /// completes, or after the Stream returned by `fetchStream` emits a done
   /// event.
   AsyncCache(Duration duration) : _duration = duration;
 
@@ -80,6 +80,7 @@
   ///
   /// Only starts counting time after the stream has been listened to,
   /// and it has completed with a `done` event.
+  @Deprecated("Feature will be removed")
   Stream<T> fetchStream(Stream<T> Function() callback) {
     if (_cachedValueFuture != null) {
       throw StateError('Previously used to cache via `fetch`');
diff --git a/test/async_cache_test.dart b/test/async_cache_test.dart
index e8ff132..4948e53 100644
--- a/test/async_cache_test.dart
+++ b/test/async_cache_test.dart
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+// ignore_for_file: deprecated_member_use_from_same_package
+
 import 'dart:async';
 
 import 'package:async/async.dart';