Drop some use of ! (dart-lang/web_socket_channel#296)

Use an if-case and destructure to new local variables to avoid some
throw-if-null operator usage.
diff --git a/pkgs/web_socket_channel/lib/html.dart b/pkgs/web_socket_channel/lib/html.dart
index 6b3ea6e..82edd2d 100644
--- a/pkgs/web_socket_channel/lib/html.dart
+++ b/pkgs/web_socket_channel/lib/html.dart
@@ -145,10 +145,11 @@
       // On Chrome and possibly other browsers, `null` can't be passed as the
       // default here. The actual arity of the function call must be correct or
       // it will fail.
-      if (_localCloseCode != null && _localCloseReason != null) {
-        innerWebSocket.close(_localCloseCode!, _localCloseReason!);
-      } else if (_localCloseCode != null) {
-        innerWebSocket.close(_localCloseCode!);
+      if ((_localCloseCode, _localCloseReason)
+          case (final closeCode?, final closeReason?)) {
+        innerWebSocket.close(closeCode, closeReason);
+      } else if (_localCloseCode case final closeCode?) {
+        innerWebSocket.close(closeCode);
       } else {
         innerWebSocket.close();
       }