anchor.diff:          return new Future.error(
               '${header.first.substring(header.first.indexOf(' ') + 1)}: $body');
         } else {
  -        return body;
  -      }
  -    }).whenComplete(() {
  -      if (_device != null) _device.dispose();
  +        return _sendLaunch(appContainer.project.name).then((_) => body);
  +      }
       });
     }
   }
  
positive.code: 
        if (lines.first.contains('200')) {
          monitor.worked(2);
        } else {
          return new Future.error(lines.first);
        }
      }).whenComplete(() {
        if (client != null) {
          client.dispose();
        }
      });
    }
  
    // Safe to call multiple times. It will open the device if it has not been opened yet.
  
negative.code: 
    Future _sendHttpPush(String target, ProgressMonitor monitor) {
      List<int> httpRequest;
      return archiveContainer(appContainer, true).then((List<int> archivedData) {
        monitor.worked(3);
        httpRequest = _buildHttpRequest(target, archivedData);
        monitor.worked(5);
        return _sendRequest(httpRequest, target);
      }).then((List<int> responseBytes) {
        String response = new String.fromCharCodes(responseBytes);
        List<String> lines = response.split('\n');
  