Nits for protocol discovery (#10112)

Rather than complain about these in a code review I figured I'd just fix them. :-)
diff --git a/packages/flutter_tools/lib/src/protocol_discovery.dart b/packages/flutter_tools/lib/src/protocol_discovery.dart
index d3f3654..aad4c85 100644
--- a/packages/flutter_tools/lib/src/protocol_discovery.dart
+++ b/packages/flutter_tools/lib/src/protocol_discovery.dart
@@ -9,71 +9,83 @@
 import 'device.dart';
 import 'globals.dart';
 
-/// Discovers a specific service protocol on a device, and forward the service
+/// Discovers a specific service protocol on a device, and forwards the service
 /// protocol device port to the host.
 class ProtocolDiscovery {
   ProtocolDiscovery._(
-    DeviceLogReader logReader,
-    String serviceName, {
+    this.logReader,
+    this.serviceName, {
     this.portForwarder,
     this.hostPort,
     this.defaultHostPort,
-  }) : _logReader = logReader, _serviceName = serviceName {
-    assert(_logReader != null);
+  }) : _prefix = '$serviceName listening on ' {
+    assert(logReader != null);
     assert(portForwarder == null || defaultHostPort != null);
-    _deviceLogSubscription = _logReader.logLines.listen(_onLine);
+    _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(DeviceLogReader logReader,
-          {DevicePortForwarder portForwarder, int hostPort}) =>
-      new ProtocolDiscovery._(logReader, _kObservatoryService,
-          portForwarder: portForwarder,
-          hostPort: hostPort,
-          defaultHostPort: kDefaultObservatoryPort);
+  factory ProtocolDiscovery.observatory(
+    DeviceLogReader logReader, {
+    DevicePortForwarder portForwarder,
+    int hostPort,
+  }) {
+    const String kObservatoryService = 'Observatory';
+    return new ProtocolDiscovery._(
+      logReader, kObservatoryService,
+      portForwarder: portForwarder,
+      hostPort: hostPort,
+      defaultHostPort: kDefaultObservatoryPort,
+    );
+  }
 
-  factory ProtocolDiscovery.diagnosticService(DeviceLogReader logReader,
-          {DevicePortForwarder portForwarder, int hostPort}) =>
-      new ProtocolDiscovery._(logReader, _kDiagnosticService,
-          portForwarder: portForwarder,
-          hostPort: hostPort,
-          defaultHostPort: kDefaultDiagnosticPort);
+  factory ProtocolDiscovery.diagnosticService(
+    DeviceLogReader logReader, {
+    DevicePortForwarder portForwarder,
+    int hostPort,
+  }) {
+    const String kDiagnosticService = 'Diagnostic server';
+    return new ProtocolDiscovery._(
+      logReader, kDiagnosticService,
+      portForwarder: portForwarder,
+      hostPort: hostPort,
+      defaultHostPort: kDefaultDiagnosticPort,
+    );
+  }
 
-  static const String _kObservatoryService = 'Observatory';
-  static const String _kDiagnosticService = 'Diagnostic server';
-
-  final DeviceLogReader _logReader;
-  final String _serviceName;
+  final DeviceLogReader logReader;
+  final String serviceName;
   final DevicePortForwarder portForwarder;
   final int hostPort;
   final int defaultHostPort;
+
+  final String _prefix;
   final Completer<Uri> _completer = new Completer<Uri>();
 
   StreamSubscription<String> _deviceLogSubscription;
+  Timer _timer;
 
   /// The discovered service URI.
-  Future<Uri> get uri {
-    return _completer.future
-        .timeout(const Duration(seconds: 60), onTimeout: () {
-          throwToolExit('Timeout while attempting to retrieve Uri for $_serviceName');
-        }).whenComplete(() {
-          _stopScrapingLogs();
-        });
-  }
+  Future<Uri> get uri => _completer.future;
 
   Future<Null> cancel() => _stopScrapingLogs();
 
   Future<Null> _stopScrapingLogs() async {
+    _timer?.cancel();
+    _timer = null;
     await _deviceLogSubscription?.cancel();
     _deviceLogSubscription = null;
   }
 
-  void _onLine(String line) {
+  void _handleLine(String line) {
     Uri uri;
-    final String prefix = '$_serviceName listening on ';
-    final int index = line.indexOf(prefix + 'http://');
+    final int index = line.indexOf(_prefix + 'http://');
     if (index >= 0) {
       try {
-        uri = Uri.parse(line.substring(index + prefix.length));
+        uri = Uri.parse(line.substring(index + _prefix.length));
       } catch (error) {
         _stopScrapingLogs();
         _completer.completeError(error);
@@ -88,7 +100,7 @@
   }
 
   Future<Uri> _forwardPort(Uri deviceUri) async {
-    printTrace('$_serviceName Uri on device: $deviceUri');
+    printTrace('$serviceName URL on device: $deviceUri');
     Uri hostUri = deviceUri;
 
     if (portForwarder != null) {
@@ -97,9 +109,9 @@
       hostPort = await portForwarder
           .forward(devicePort, hostPort: hostPort)
           .timeout(const Duration(seconds: 60), onTimeout: () {
-        throwToolExit('Timeout while atempting to foward device port $devicePort for $_serviceName');
+        throwToolExit('Timeout while atempting to foward device port $devicePort for $serviceName');
       });
-      printTrace('Forwarded host port $hostPort to device port $devicePort for $_serviceName');
+      printTrace('Forwarded host port $hostPort to device port $devicePort for $serviceName');
       hostUri = deviceUri.replace(port: hostPort);
     }