diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5e45056..a3cb13f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 2.0.3
+
+* Fix `HttpMultiServer.loopback()` and `.loopbackSecure()` for environments that
+  don't support IPv4.
+
 ## 2.0.2
 
 * Fix a dependency that was incorrectly marked as dev-only.
diff --git a/lib/http_multi_server.dart b/lib/http_multi_server.dart
index 18d42cf..1f5bddd 100644
--- a/lib/http_multi_server.dart
+++ b/lib/http_multi_server.dart
@@ -124,10 +124,14 @@
   static Future<HttpServer> _loopback(int port,
       Future<HttpServer> bind(InternetAddress address, int port),
       [int remainingRetries]) async {
-    if (remainingRetries == null) remainingRetries = 5;
+    remainingRetries ??= 5;
+
+    if (!await supportsIPv4) {
+      return await bind(InternetAddress.LOOPBACK_IP_V6, port);
+    }
 
     var v4Server = await bind(InternetAddress.LOOPBACK_IP_V4, port);
-    if (!await supportsIpV6) return v4Server;
+    if (!await supportsIPv6) return v4Server;
 
     try {
       // Reuse the IPv4 server's port so that if [port] is 0, both servers use
diff --git a/lib/src/utils.dart b/lib/src/utils.dart
index 19188cb..21c335c 100644
--- a/lib/src/utils.dart
+++ b/lib/src/utils.dart
@@ -5,20 +5,24 @@
 import 'dart:async';
 import 'dart:io';
 
-/// A cache for [supportsIpV6].
-bool _supportsIpV6;
-
 /// Returns whether this computer supports binding to IPv6 addresses.
-Future<bool> get supportsIpV6 async {
-  if (_supportsIpV6 != null) return _supportsIpV6;
-
+final Future<bool> supportsIPv6 = () async {
   try {
     var socket = await ServerSocket.bind(InternetAddress.LOOPBACK_IP_V6, 0);
-    _supportsIpV6 = true;
     socket.close();
     return true;
   } on SocketException catch (_) {
-    _supportsIpV6 = false;
     return false;
   }
-}
+}();
+
+/// Returns whether this computer supports binding to IPv4 addresses.
+final Future<bool> supportsIPv4 = () async {
+  try {
+    var socket = await ServerSocket.bind(InternetAddress.LOOPBACK_IP_V4, 0);
+    socket.close();
+    return true;
+  } on SocketException catch (_) {
+    return false;
+  }
+}();
diff --git a/pubspec.yaml b/pubspec.yaml
index 37bb75e..9beaa7d 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: http_multi_server
-version: 2.0.2
+version: 2.0.3
 author: "Dart Team <misc@dartlang.org>"
 homepage: http://github.com/dart-lang/http_multi_server
 description:
diff --git a/test/http_multi_server_test.dart b/test/http_multi_server_test.dart
index 4aacab1..9468cfe 100644
--- a/test/http_multi_server_test.dart
+++ b/test/http_multi_server_test.dart
@@ -140,20 +140,21 @@
 
     tearDown(() => server.close());
 
-    test("listens on all localhost interfaces", () {
+    test("listens on all localhost interfaces", () async {
       server.listen((request) {
         request.response.write("got request");
         request.response.close();
       });
 
-      expect(http.read("http://127.0.0.1:${server.port}/"),
-          completion(equals("got request")));
+      if (await supportsIPv4) {
+        expect(http.read("http://127.0.0.1:${server.port}/"),
+            completion(equals("got request")));
+      }
 
-      return supportsIpV6.then((supportsIpV6) {
-        if (!supportsIpV6) return;
+      if (await supportsIPv4) {
         expect(http.read("http://[::1]:${server.port}/"),
             completion(equals("got request")));
-      });
+      }
     });
   });
 }
