anchor.diff:        try {
           // We pass an encoding of LATIN1 so that we don't try and interpret the
           // `adb shell getprop` result as UTF8.
  -        final ProcessResult result = processManager.runSync(
  +        final ProcessResult result = await processManager.run(
             propCommand,
             stdoutEncoding: LATIN1
  -        );
  +        ).timeout(const Duration(seconds: 5));
           if (result.exitCode == 0) {
             _properties = parseAdbDeviceProperties(result.stdout);
           } else {
             printError('Error retrieving device properties for $name.');
           }
  -      } catch (error) {
  +      } on TimeoutException catch (_) {
  +        throwToolExit('adb not responding');
  +      } on ProcessException catch (error) {
           printError('Error retrieving device properties for $name: $error');
         }
       }
  
positive.code:     bool prebuiltApplication: false,
      bool applicationNeedsRebuild: false,
    }) async {
      if (!_checkForSupportedAdbVersion() || !await _checkForSupportedAndroidVersion())
        return new LaunchResult.failed();
  
      if (await targetPlatform != TargetPlatform.android_arm && mode != BuildMode.debug) {
  
negative.code:       return false;
      }
  
      if (!await _checkForSupportedAdbVersion() || !await _checkForSupportedAndroidVersion())
        return false;
  
      final Status status = logger.startProgress('Installing ${apk.apkPath}...', expectSlowOperation: true);
  