diff --git a/.travis.yml b/.travis.yml
index 9124e03..3c6ac28 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,8 +7,6 @@
 
 dart:
 - dev
-- stable
-
 # See https://docs.travis-ci.com/user/languages/dart/ for details.
 dart_task:
 - test: --platform vm
@@ -19,7 +17,7 @@
 # them against each Dart version.
 matrix:
   include:
-  - dart: stable
+  - dart: dev
     dart_task: dartfmt
   - dart: dev
     dart_task: dartanalyzer
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d1aa163..f04571e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.1.1+1
+
+* Updated SDK version to 2.0.0-dev.17.0
+
 ## 0.1.1
 
 * Add a `whenError()` parameter to allow requests to be retried when they
diff --git a/pubspec.yaml b/pubspec.yaml
index 030ad20..30eeb26 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,11 +1,11 @@
 name: http_retry
-version: 0.1.1
+version: 0.1.1+1
 description: HTTP client middleware that automatically retries requests.
 author: Dart Team <misc@dartlang.org>
 homepage: https://github.com/dart-lang/http_retry
 
 environment:
-  sdk: '>=1.24.0 <2.0.0'
+  sdk: '>=2.0.0-dev.17.0 <2.0.0'
 
 dependencies:
   async: ">=1.2.0 <=3.0.0"
diff --git a/test/http_retry_test.dart b/test/http_retry_test.dart
index 29ab172..952e1f2 100644
--- a/test/http_retry_test.dart
+++ b/test/http_retry_test.dart
@@ -44,7 +44,7 @@
           count++;
           return count < 2 ? new Response("", 503) : new Response("", 200);
         }, count: 2)),
-        delay: (_) => Duration.ZERO);
+        delay: (_) => Duration.zero);
 
     var response = await client.get("http://example.org");
     expect(response.statusCode, equals(200));
@@ -59,7 +59,7 @@
               headers: {"retry": count < 2 ? "true" : "false"});
         }, count: 2)),
         when: (response) => response.headers["retry"] == "true",
-        delay: (_) => Duration.ZERO);
+        delay: (_) => Duration.zero);
 
     var response = await client.get("http://example.org");
     expect(response.headers, containsPair("retry", "false"));
@@ -75,7 +75,7 @@
           return new Response("", 200);
         }, count: 2)),
         whenError: (error, _) => error == "oh no",
-        delay: (_) => Duration.ZERO);
+        delay: (_) => Duration.zero);
 
     var response = await client.get("http://example.org");
     expect(response.statusCode, equals(200));
@@ -86,7 +86,7 @@
     var client = new RetryClient(
         new MockClient(expectAsync1((request) async => throw "oh no")),
         whenError: (error, _) => error == "oh yeah",
-        delay: (_) => Duration.ZERO);
+        delay: (_) => Duration.zero);
 
     expect(client.get("http://example.org"), throwsA("oh no"));
   });
@@ -95,7 +95,7 @@
     var client = new RetryClient(
         new MockClient(
             expectAsync1((_) async => new Response("", 503), count: 4)),
-        delay: (_) => Duration.ZERO);
+        delay: (_) => Duration.zero);
     var response = await client.get("http://example.org");
     expect(response.statusCode, equals(503));
   });
@@ -105,7 +105,7 @@
         new MockClient(
             expectAsync1((_) async => new Response("", 503), count: 13)),
         retries: 12,
-        delay: (_) => Duration.ZERO);
+        delay: (_) => Duration.zero);
     var response = await client.get("http://example.org");
     expect(response.statusCode, equals(503));
   });
@@ -116,7 +116,7 @@
       var client = new RetryClient(new MockClient(expectAsync1((_) async {
         count++;
         if (count == 1) {
-          expect(fake.elapsed, equals(Duration.ZERO));
+          expect(fake.elapsed, equals(Duration.zero));
         } else if (count == 2) {
           expect(fake.elapsed, equals(new Duration(milliseconds: 500)));
         } else if (count == 3) {
@@ -140,9 +140,9 @@
           new MockClient(expectAsync1((_) async {
             count++;
             if (count == 1) {
-              expect(fake.elapsed, equals(Duration.ZERO));
+              expect(fake.elapsed, equals(Duration.zero));
             } else if (count == 2) {
-              expect(fake.elapsed, equals(Duration.ZERO));
+              expect(fake.elapsed, equals(Duration.zero));
             } else if (count == 3) {
               expect(fake.elapsed, equals(new Duration(seconds: 1)));
             } else if (count == 4) {
@@ -165,7 +165,7 @@
           new MockClient(expectAsync1((_) async {
             count++;
             if (count == 1) {
-              expect(fake.elapsed, equals(Duration.ZERO));
+              expect(fake.elapsed, equals(Duration.zero));
             } else if (count == 2) {
               expect(fake.elapsed, equals(new Duration(seconds: 1)));
             } else if (count == 3) {
@@ -193,7 +193,7 @@
         new MockClient(
             expectAsync1((_) async => new Response("", 503), count: 3)),
         retries: 2,
-        delay: (_) => Duration.ZERO,
+        delay: (_) => Duration.zero,
         onRetry: expectAsync3((request, response, retryCount) {
           expect(request.url, equals(Uri.parse("http://example.org")));
           expect(response.statusCode, equals(503));
@@ -217,7 +217,7 @@
           expect(request.body, equals("hello"));
           return new Response("", 503);
         }, count: 2)),
-        [Duration.ZERO]);
+        [Duration.zero]);
 
     var request = new Request("POST", Uri.parse("http://example.org"));
     request.body = "hello";
