enable and fix a number of lints
diff --git a/analysis_options.yaml b/analysis_options.yaml
new file mode 100644
index 0000000..6f476fe
--- /dev/null
+++ b/analysis_options.yaml
@@ -0,0 +1,44 @@
+include: package:pedantic/analysis_options.yaml
+analyzer:
+  strong-mode:
+    implicit-casts: false
+linter:
+  rules:
+    - avoid_empty_else
+    - avoid_init_to_null
+    - avoid_null_checks_in_equality_operators
+    - avoid_unused_constructor_parameters
+    - await_only_futures
+    - camel_case_types
+    - cancel_subscriptions
+    - constant_identifier_names
+    - control_flow_in_finally
+    - directives_ordering
+    - empty_catches
+    - empty_constructor_bodies
+    - empty_statements
+    - hash_and_equals
+    - implementation_imports
+    - iterable_contains_unrelated_type
+    - library_names
+    - library_prefixes
+    - list_remove_unrelated_type
+    - non_constant_identifier_names
+    - overridden_fields
+    - package_api_docs
+    - package_names
+    - package_prefixed_library_names
+    - prefer_equal_for_default_values
+    - prefer_final_fields
+    - prefer_generic_function_type_aliases
+    - prefer_is_not_empty
+    - slash_for_doc_comments
+    - super_goes_last
+    - test_types_in_equals
+    - throw_in_finally
+    - type_init_formals
+    - unnecessary_brace_in_string_interps
+    - unnecessary_const
+    - unnecessary_new
+    - unrelated_type_equality_checks
+    - valid_regexps
diff --git a/lib/http_multi_server.dart b/lib/http_multi_server.dart
index 309e57f..22c6d62 100644
--- a/lib/http_multi_server.dart
+++ b/lib/http_multi_server.dart
@@ -86,7 +86,7 @@
   /// listened to when this is called.
   HttpMultiServer(Iterable<HttpServer> servers)
       : _servers = servers.toSet(),
-        defaultResponseHeaders = new MultiHeaders(
+        defaultResponseHeaders = MultiHeaders(
             servers.map((server) => server.defaultResponseHeaders)),
         super(StreamGroup.merge(servers));
 
@@ -95,7 +95,7 @@
   ///
   /// See [HttpServer.bind].
   static Future<HttpServer> loopback(int port,
-      {int backlog, bool v6Only: false, bool shared: false}) {
+      {int backlog, bool v6Only = false, bool shared = false}) {
     if (backlog == null) backlog = 0;
 
     return _loopback(
@@ -109,9 +109,9 @@
   /// See [HttpServer.bindSecure].
   static Future<HttpServer> loopbackSecure(int port, SecurityContext context,
       {int backlog,
-      bool v6Only: false,
-      bool requestClientCertificate: false,
-      bool shared: false}) {
+      bool v6Only = false,
+      bool requestClientCertificate = false,
+      bool shared = false}) {
     if (backlog == null) backlog = 0;
 
     return _loopback(
@@ -143,7 +143,7 @@
       // Reuse the IPv4 server's port so that if [port] is 0, both servers use
       // the same ephemeral port.
       var v6Server = await bind(InternetAddress.loopbackIPv6, v4Server.port);
-      return new HttpMultiServer([v4Server, v6Server]);
+      return HttpMultiServer([v4Server, v6Server]);
     } on SocketException catch (error) {
       if (error.osError.errorCode != _addressInUseErrno) rethrow;
       if (port != 0) rethrow;
@@ -152,18 +152,18 @@
       // A port being available on IPv4 doesn't necessarily mean that the same
       // port is available on IPv6. If it's not (which is rare in practice),
       // we try again until we find one that's available on both.
-      v4Server.close();
+      await v4Server.close();
       return await _loopback(port, bind, remainingRetries - 1);
     }
   }
 
-  Future close({bool force: false}) =>
+  Future close({bool force = false}) =>
       Future.wait(_servers.map((server) => server.close(force: force)));
 
   /// Returns an HttpConnectionsInfo object summarizing the total number of
   /// current connections handled by all the servers.
   HttpConnectionsInfo connectionsInfo() {
-    var info = new HttpConnectionsInfo();
+    var info = HttpConnectionsInfo();
     for (var server in _servers) {
       var subInfo = server.connectionsInfo();
       info.total += subInfo.total;
diff --git a/lib/src/utils.dart b/lib/src/utils.dart
index 3d24a03..2709dab 100644
--- a/lib/src/utils.dart
+++ b/lib/src/utils.dart
@@ -9,7 +9,7 @@
 final Future<bool> supportsIPv6 = () async {
   try {
     var socket = await ServerSocket.bind(InternetAddress.loopbackIPv6, 0);
-    socket.close();
+    await socket.close();
     return true;
   } on SocketException catch (_) {
     return false;
@@ -20,7 +20,7 @@
 final Future<bool> supportsIPv4 = () async {
   try {
     var socket = await ServerSocket.bind(InternetAddress.loopbackIPv4, 0);
-    socket.close();
+    await socket.close();
     return true;
   } on SocketException catch (_) {
     return false;
diff --git a/pubspec.yaml b/pubspec.yaml
index 1bf6a8e..01fd07a 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -13,4 +13,5 @@
 
 dev_dependencies:
   http: ^0.12.0
+  pedantic: ^1.4.0
   test: ^1.5.2
diff --git a/test/http_multi_server_test.dart b/test/http_multi_server_test.dart
index 9c7becf..a61212e 100644
--- a/test/http_multi_server_test.dart
+++ b/test/http_multi_server_test.dart
@@ -13,15 +13,15 @@
 void main() {
   group("with multiple HttpServers", () {
     var multiServer;
-    var subServer1;
-    var subServer2;
-    var subServer3;
+    HttpServer subServer1;
+    HttpServer subServer2;
+    HttpServer subServer3;
     setUp(() {
       return Future.wait([
         HttpServer.bind("localhost", 0).then((server) => subServer1 = server),
         HttpServer.bind("localhost", 0).then((server) => subServer2 = server),
         HttpServer.bind("localhost", 0).then((server) => subServer3 = server)
-      ]).then((servers) => multiServer = new HttpMultiServer(servers));
+      ]).then((servers) => multiServer = HttpMultiServer(servers));
     });
 
     tearDown(() => multiServer.close());
@@ -127,8 +127,8 @@
 
     test("connectionsInfo sums the values for all servers", () {
       var pendingRequests = 0;
-      var awaitingResponseCompleter = new Completer();
-      var sendResponseCompleter = new Completer();
+      var awaitingResponseCompleter = Completer();
+      var sendResponseCompleter = Completer();
       multiServer.listen((request) {
         sendResponseCompleter.future.then((_) {
           request.response.write("got request");
@@ -159,7 +159,7 @@
   group("HttpMultiServer.loopback", () {
     var server;
     setUp(() {
-      return HttpMultiServer.loopback(0).then((server_) => server = server_);
+      return HttpMultiServer.loopback(0).then((s) => server = s);
     });
 
     tearDown(() => server.close());