anchor.diff:    _ensureDir(outPackages);
   
     // Copy all the files we didn't process
  -  var futures = [];
     var dirs = options.packageDirs;
  -  for (var package in _polymerPackageDependencies) {
  -    for (var relpath in _listPackageDir(package, 'lib', options)) {
  +
  +  return Future.forEach(_polymerPackageDependencies, (package) {
  +    return Future.forEach(_listPackageDir(package, 'lib', options), (relpath) {
         var inpath = path.join(dirs[package], relpath);
         var outpath = path.join(outPackages, package, relpath.substring(4));
  -      futures.add(_copyFile(inpath, outpath));
  -    }
  -  }
  -  return Future.wait(futures);
  +      return _copyFile(inpath, outpath);
  +    });
  +  });
   }
   
   /** Ensure [dirpath] exists. */
  
positive.code: /** Copy a file from [inpath] to [outpath]. */
  Future _copyFile(String inpath, String outpath) {
    _ensureDir(path.dirname(outpath));
    var writer = new File(outpath).openWrite();
    return writer.addStream(new File(inpath).openRead())
        .then((_) => writer.close());
  }
  
  /** Write contents of an [asset] into a file at [filepath]. */
  Future _writeAsset(String filepath, Asset asset) {
    _ensureDir(path.dirname(filepath));
    var writer = new File(filepath).openWrite();
    return writer.addStream(asset.read()).then((_) => writer.close());
  }
  
negative.code:       filepath = path.join(options.outDir, _toSystemPath(id.path));
      } else {
        // TODO(sigmund): do something about other assets?
        return null;
      }
  
      return _writeAsset(filepath, asset);
    });
  }
  
  /**
  