diff --git a/pubspec.yaml b/pubspec.yaml
index a628ec6..e10dadf 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,13 +1,16 @@
 name: pool
-version: 1.3.5
+version: 1.3.6-dev
 author: Dart Team <misc@dartlang.org>
 description: A class for managing a finite pool of resources.
 homepage: https://github.com/dart-lang/pool
+
+environment:
+  sdk: ">=2.0.0-dev.17.0 <2.0.0"
+
 dependencies:
   async: ">=1.4.0 <3.0.0"
   stack_trace: ">=0.9.2 <2.0.0"
-environment:
-  sdk: ">=2.0.0-dev.17.0 <2.0.0"
+
 dev_dependencies:
-  fake_async: ">=0.1.0 <0.2.0"
-  test: ">=0.12.0 <0.13.0"
+  fake_async: ^1.0.0
+  test: ^1.0.0
diff --git a/test/pool_test.dart b/test/pool_test.dart
index d0e7017..cb0dd30 100644
--- a/test/pool_test.dart
+++ b/test/pool_test.dart
@@ -55,7 +55,7 @@
     test("can be called freely up to the limit", () {
       var pool = new Pool(50);
       for (var i = 0; i < 50; i++) {
-        pool.withResource(expectAsync(() => new Completer().future));
+        pool.withResource(expectAsync0(() => new Completer().future));
       }
     });
 
@@ -63,7 +63,7 @@
       new FakeAsync().run((async) {
         var pool = new Pool(50);
         for (var i = 0; i < 50; i++) {
-          pool.withResource(expectAsync(() => new Completer().future));
+          pool.withResource(expectAsync0(() => new Completer().future));
         }
         pool.withResource(expectNoAsync());
 
@@ -75,7 +75,7 @@
       new FakeAsync().run((async) {
         var pool = new Pool(50);
         for (var i = 0; i < 49; i++) {
-          pool.withResource(expectAsync(() => new Completer().future));
+          pool.withResource(expectAsync0(() => new Completer().future));
         }
 
         var completer = new Completer();
@@ -100,7 +100,7 @@
     // Regression test for #3.
     test("can be called immediately before close()", () async {
       var pool = new Pool(1);
-      pool.withResource(expectAsync(() {}));
+      pool.withResource(expectAsync0(() {}));
       await pool.close();
     });
   });
@@ -160,7 +160,7 @@
         for (var i = 0; i < 50; i++) {
           expect(pool.request(), completes);
         }
-        expect(pool.request(), throwsA(new isInstanceOf<TimeoutException>()));
+        expect(pool.request(), throwsA(new TypeMatcher<TimeoutException>()));
 
         async.elapse(new Duration(seconds: 6));
       });
@@ -270,7 +270,7 @@
         var innerZone = Zone.current;
         expect(innerZone, isNot(equals(outerZone)));
 
-        resource.allowRelease(expectAsync(() {
+        resource.allowRelease(expectAsync0(() {
           expect(Zone.current, equals(innerZone));
         }));
       });
@@ -450,7 +450,7 @@
 ///
 /// This should only be called within a [FakeAsync.run] zone.
 Matcher get doesNotComplete => predicate((future) {
-      expect(future, new isInstanceOf<Future>());
+      expect(future, new TypeMatcher<Future>());
 
       var stack = new Trace.current(1);
       future.then((_) => registerException(
