Fix places awaiting void, for dart 2.

Looks like cache.invalidate does do some asynchronous stuff
(`splitter.close()`, but notably not `_stale.close()` which returns void).
Return the future for that stuff without changing its order of
operations.

Also some place awaiting `expect()` which appeared to be intended to be
awaiting `cancel()`, switching those still passes tests.
diff --git a/lib/src/async_cache.dart b/lib/src/async_cache.dart
index 8c25267..c2d7c01 100644
--- a/lib/src/async_cache.dart
+++ b/lib/src/async_cache.dart
@@ -89,12 +89,13 @@
   }
 
   /// Removes any cached value.
-  void invalidate() {
+  Future invalidate() {
     _cachedValueFuture = null;
-    _cachedStreamSplitter?.close();
+    Future invalidate = _cachedStreamSplitter?.close();
     _cachedStreamSplitter = null;
     _stale?.cancel();
     _stale = null;
+    return invalidate;
   }
 
   void _startStaleTimer() {
diff --git a/test/async_cache_test.dart b/test/async_cache_test.dart
index 747835b..0a5e0f0 100644
--- a/test/async_cache_test.dart
+++ b/test/async_cache_test.dart
@@ -32,7 +32,7 @@
     var completer = new Completer<String>();
     expect(cache.fetch(() => completer.future), completion('Expensive'));
     expect(cache.fetch(expectAsync0(() {}, count: 0)), completion('Expensive'));
-    await completer.complete('Expensive');
+    completer.complete('Expensive');
   });
 
   test('should fetch via a callback again when cache expires', () {
diff --git a/test/stream_queue_test.dart b/test/stream_queue_test.dart
index 32cc505..37dedb9 100644
--- a/test/stream_queue_test.dart
+++ b/test/stream_queue_test.dart
@@ -517,8 +517,8 @@
         expect(await events.next, 1);
         expect(controller.hasListener, isTrue);
 
-        events.cancel(immediate: true);
-        await expect(controller.hasListener, isFalse);
+        await events.cancel(immediate: true);
+        expect(controller.hasListener, isFalse);
       });
 
       test("cancels the underlying subscription when called before any event",