anchor.diff:      assert(logReader != null);
       assert(portForwarder == null || defaultHostPort != null);
       _deviceLogSubscription = logReader.logLines.listen(_handleLine);
  -    _timer = new Timer(const Duration(seconds: 60), () {
  -      _stopScrapingLogs();
  -      _completer.completeError(new ToolExit('Timeout while attempting to retrieve URL for $serviceName'));
  -    });
     }
   
     factory ProtocolDiscovery.observatory(
  
positive.code:   final Completer<Uri> _completer = new Completer<Uri>();
  
    StreamSubscription<String> _deviceLogSubscription;
    Timer _timer;
  
    /// The discovered service URI.
    Future<Uri> get uri => _completer.future;
  
negative.code:   Future<Null> cancel() => _stopScrapingLogs();
  
    Future<Null> _stopScrapingLogs() async {
      await _deviceLogSubscription?.cancel();
      _deviceLogSubscription = null;
    }
  