anchor.diff:          // TODO(ussuri): Perhaps differentiate between the user's own bower.json
           // (a hard error with a modal popup) and dependency bower.json's (a soft
           // error with just a progress bar notification).
  -        return new Future.error('Error parsing Bower spec file ($specDesc): $e');
  +        throw "Error parsing Bower spec file ($specDesc): $e";
         }
   
         List<Future> futures = [];
  
positive.code:   }
  
    Future<String> _readLocalSpecFile(chrome.ChromeFileEntry file) {
      return file.readText().catchError((e) {
        return new Future.error("Failed to read ${file.fullPath}: $e");
      });
    }
  
    Future<String> _readRemoteSpecFile(_Package package) {
      final completer = new Completer();
  
      final request = new html.HttpRequest();
      request.open('GET', package.getUrlForDownloading(_packageSpecFileName));
      request.onLoad.listen((event) {
        if (request.status == 200) {
  
negative.code:   _Package(this.name, this.fullPath) {
      final Match match = _PACKAGE_SPEC_REGEXP.matchAsPrefix(fullPath);
      if (match == null) {
        throw "Malformed or unsupported Bower dependency: '$fullPath'";
      }
      path = match.group(1);
      branch = match.group(2);
  