Force quit frontend server after one second, unskip tests (#1387)

Fixes #1386
Fixes #1383
diff --git a/frontend_server_client/CHANGELOG.md b/frontend_server_client/CHANGELOG.md
index c77b290..d94daf2 100644
--- a/frontend_server_client/CHANGELOG.md
+++ b/frontend_server_client/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 2.1.2
+
+- Force kill the frontend server after one second when calling shutdown. It
+  appears to hang on windows sometimes.
+
 ## 2.1.1
 
 - Fix a bug where spaces in the output dill path would cause a parse error when
diff --git a/frontend_server_client/lib/src/frontend_server_client.dart b/frontend_server_client/lib/src/frontend_server_client.dart
index b0a83c7..b98df0d 100644
--- a/frontend_server_client/lib/src/frontend_server_client.dart
+++ b/frontend_server_client/lib/src/frontend_server_client.dart
@@ -295,10 +295,13 @@
   }
 
   /// Stop the service gracefully (using the shutdown command)
-  Future<int> shutdown() {
-    _feServerStdoutLines.cancel();
+  Future<int> shutdown() async {
     _sendCommand('quit');
-    return _feServer.exitCode;
+    var timer = Timer(const Duration(seconds: 1), _feServer.kill);
+    var exitCode = await _feServer.exitCode;
+    timer.cancel();
+    await _feServerStdoutLines.cancel();
+    return exitCode;
   }
 
   /// Kills the server forcefully by calling `kill` on the process, and
diff --git a/frontend_server_client/pubspec.yaml b/frontend_server_client/pubspec.yaml
index 63898c9..c728f84 100644
--- a/frontend_server_client/pubspec.yaml
+++ b/frontend_server_client/pubspec.yaml
@@ -1,5 +1,5 @@
 name: frontend_server_client
-version: 2.1.1
+version: 2.1.2
 description: >-
   Client code to start and interact with the frontend_server compiler from the
   Dart SDK.
diff --git a/frontend_server_client/test/frontend_sever_client_test.dart b/frontend_server_client/test/frontend_sever_client_test.dart
index d0b00a8..97a66a4 100644
--- a/frontend_server_client/test/frontend_sever_client_test.dart
+++ b/frontend_server_client/test/frontend_sever_client_test.dart
@@ -117,10 +117,7 @@
 
     expect(await stdoutLines.next, p.join('goodbye', 'world'));
     expect(await process.exitCode, 0);
-  },
-      skip: Platform.isWindows
-          ? 'https://github.com/dart-lang/webdev/issues/1383'
-          : false);
+  });
 
   test('can handle compile errors and reload fixes', () async {
     var entrypoint = p.join(packageRoot, 'bin', 'main.dart');
@@ -187,10 +184,7 @@
 
     expect(await stdoutLines.next, p.join('goodbye', 'world'));
     expect(await process.exitCode, 0);
-  },
-      skip: Platform.isWindows
-          ? 'https://github.com/dart-lang/webdev/issues/1383'
-          : false);
+  });
 
   test('can compile and recompile a dartdevc app', () async {
     var entrypoint =