Reliably find unused port to start extension backend http service on (#1451)

We start extension backend http server with port 0, which creates flakes
in flutter web tests. Find an unused port instead.

Closes: https://github.com/dart-lang/webdev/issues/1450
diff --git a/dwds/CHANGELOG.md b/dwds/CHANGELOG.md
index 17ec6b9..a5f3561 100644
--- a/dwds/CHANGELOG.md
+++ b/dwds/CHANGELOG.md
@@ -12,6 +12,7 @@
   flutter tools and webdev.
 
 - Fix chrome detection in iPhone emulation mode in chrome or edge browsers.
+- Reliably find unused port for extension backend http service.
 
 ## 11.4.0
 
diff --git a/dwds/lib/src/servers/extension_backend.dart b/dwds/lib/src/servers/extension_backend.dart
index 85aba76..54ee436 100644
--- a/dwds/lib/src/servers/extension_backend.dart
+++ b/dwds/lib/src/servers/extension_backend.dart
@@ -8,7 +8,6 @@
 import 'dart:io';
 
 import 'package:async/async.dart';
-import 'package:http_multi_server/http_multi_server.dart';
 import 'package:logging/logging.dart';
 import 'package:shelf/shelf.dart';
 
@@ -54,7 +53,7 @@
       }
       return Response.notFound('');
     }).add(_socketHandler.handler);
-    var server = await HttpMultiServer.bind(hostname, 0);
+    var server = await startHttpServer(hostname);
     serveHttpRequests(server, cascade.handler, (e, s) {
       _logger.warning('Error serving requests', e);
       emitEvent(DwdsEvent.httpRequestException('ExtensionBackend', '$e:$s'));