diff --git a/lib/src/io.dart b/lib/src/io.dart
index 58a52ef00eaf0e412fb618ec23763f836da0273f..2f137b603b433e23f2f5231b7f43f2e09152fa69 100644
--- a/lib/src/io.dart
+++ b/lib/src/io.dart
@@ -398,7 +398,7 @@ void tryDeleteEntry(String path) {
   try {
     deleteEntry(path);
   } catch (error, stackTrace) {
-    log.fine("Failed to delete $entry: $error\n"
+    log.fine("Failed to delete $path: $error\n"
         "${new Chain.forTrace(stackTrace)}");
   }
 }
diff --git a/lib/src/source/hosted.dart b/lib/src/source/hosted.dart
index 825a87257384c62e6834b01a23c925754a16ff73..593f99353467837b6aa12fec735f22fbcb79cd15 100644
--- a/lib/src/source/hosted.dart
+++ b/lib/src/source/hosted.dart
@@ -134,7 +134,9 @@ class HostedSource extends CachedSource {
       var url = _directoryToUrl(path.basename(serverDir));
       var packages = _getCachedPackagesInDirectory(path.basename(serverDir));
       packages.sort(Package.orderByNameAndVersion);
-      for (var package in packages) {
+      // TODO(nweiz): Use a normal for loop here when
+      // https://github.com/dart-lang/async_await/issues/72 is fixed.
+      await Future.forEach(packages, (package) async {
         try {
           await _download(url, package.name, package.version, package.dir);
           successes++;
@@ -148,7 +150,7 @@ class HostedSource extends CachedSource {
 
           tryDeleteEntry(package.dir);
         }
-      }
+      });
     }
 
     return new Pair(successes, failures);