anchor.diff:      });
     }
   
  +  Future _expectHttpOkResponse(List<int> msg) {
  +    String response = new String.fromCharCodes(msg);
  +    List<String> lines = response.split('\r\n');
  +    Iterable<String> header = lines.takeWhile((l) => l.isNotEmpty);
  +    String body = lines.skip(header.length + 1).join('<br>\n');
  +
  +    if (!header.first.contains('200')) {
  +      // Error! Fail with the error line.
  +      return new Future.error(
  +          '${header.first.substring(header.first.indexOf(' ') + 1)}: $body');
  +    } else {
  +      return new Future.value(body);
  +    }
  +  }
  +
     Future _pushViaUSB(ProgressMonitor monitor) {
       List<int> httpRequest;
       AndroidDevice _device;
  +
   
       // Build the archive.
       return archiveContainer(appContainer, true).then((List<int> archivedData) {
  
positive.code:     // Start ADT on the device.
      //return client.startActivity(AdbApplication.CHROME_ADT);
  
      // Setup port forwarding to 2424 on the device.
      return client.forwardTcp(2424, 2424).then((_) {
        // Push the app binary to port 2424.
  
negative.code:     return TcpClient.createClient(target, 2424).then((TcpClient client) {
        client.write(httpRequest);
        return client.stream.timeout(new Duration(minutes: 1)).first;
      }).catchError((e) {
        print(e);
        print(e);
      }).whenComplete(() {
        if (client != null) {
          client.dispose();
  