Add a guard for a closed sink before writing requests (#703)

diff --git a/dwds/CHANGELOG.md b/dwds/CHANGELOG.md
index 58e69e9..ea6dfad 100644
--- a/dwds/CHANGELOG.md
+++ b/dwds/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.7.1-dev
+
+- Don't attempt to write a vm service request to a closed connection.
+  - Instead we log a warning with the attempted request message and return.
+
 ## 0.7.0
 
 - `DWDS.start` now requires an `AssetHandler` instead of `applicationPort`,
diff --git a/dwds/lib/src/dwds_vm_client.dart b/dwds/lib/src/dwds_vm_client.dart
index 3931e2d..70f0bb1 100644
--- a/dwds/lib/src/dwds_vm_client.dart
+++ b/dwds/lib/src/dwds_vm_client.dart
@@ -5,11 +5,14 @@
 import 'dart:async';
 import 'dart:convert';
 
+import 'package:logging/logging.dart';
 import 'package:vm_service/vm_service.dart';
 
 import 'services/chrome_proxy_service.dart' show ChromeProxyService;
 import 'services/debug_service.dart';
 
+final _logger = Logger('DwdsVmClient');
+
 // A client of the vm service that registers some custom extensions like
 // hotRestart.
 class DwdsVmClient {
@@ -31,10 +34,16 @@
     var responseController = StreamController<Map<String, Object>>();
     VmServerConnection(requestController.stream, responseController.sink,
         debugService.serviceExtensionRegistry, debugService.chromeProxyService);
-    var client = VmService(
-        responseController.stream.map(jsonEncode),
-        (request) => requestController.sink
-            .add(jsonDecode(request) as Map<String, dynamic>));
+    var client =
+        VmService(responseController.stream.map(jsonEncode), (request) {
+      if (requestController.isClosed) {
+        _logger.warning(
+            'Attempted to send a request but the connection is closed:\n\n'
+            '$request');
+        return;
+      }
+      requestController.sink.add(jsonDecode(request) as Map<String, dynamic>);
+    });
     var chromeProxyService =
         debugService.chromeProxyService as ChromeProxyService;
 
diff --git a/dwds/pubspec.yaml b/dwds/pubspec.yaml
index 563faab..6a41efe 100644
--- a/dwds/pubspec.yaml
+++ b/dwds/pubspec.yaml
@@ -1,5 +1,5 @@
 name: dwds
-version: 0.7.0
+version: 0.7.1-dev
 author: Dart Team <misc@dartlang.org>
 homepage: https://github.com/dart-lang/webdev/tree/master/dwds
 description: >-