diff --git a/sdk/lib/io/websocket_impl.dart b/sdk/lib/io/websocket_impl.dart
index 9693873..cc68544 100644
--- a/sdk/lib/io/websocket_impl.dart
+++ b/sdk/lib/io/websocket_impl.dart
@@ -888,7 +888,7 @@
           if (_readyState == WebSocket.OPEN) {
             _readyState = WebSocket.CLOSING;
             if (!_isReservedStatusCode(transformer.closeCode)) {
-              _close(transformer.closeCode);
+              _close(transformer.closeCode, transformer.closeReason);
             } else {
               _close();
             }
diff --git a/tests/standalone/io/web_socket_test.dart b/tests/standalone/io/web_socket_test.dart
index 9ae1758..ae38307 100644
--- a/tests/standalone/io/web_socket_test.dart
+++ b/tests/standalone/io/web_socket_test.dart
@@ -42,6 +42,13 @@
   Future<WebSocket> createClient(int port) =>
     WebSocket.connect('${secure ? "wss" : "ws"}://$HOST_NAME:$port/');
 
+  checkCloseStatus(webSocket, closeStatus, closeReason) {
+    Expect.equals(closeStatus == null ? WebSocketStatus.NO_STATUS_RECEIVED
+                                      : closeStatus, webSocket.closeCode);
+    Expect.equals(closeReason == null ? ""
+                                      : closeReason, webSocket.closeReason);
+  }
+
   void testRequestResponseClientCloses(int totalConnections,
                                        int closeStatus,
                                        String closeReason,
@@ -55,12 +62,7 @@
         webSocket.listen(
             webSocket.add,
             onDone: () {
-              Expect.equals(closeStatus == null
-                            ? WebSocketStatus.NO_STATUS_RECEIVED
-                            : closeStatus, webSocket.closeCode);
-              Expect.equals(
-                  closeReason == null ? ""
-                                      : closeReason, webSocket.closeReason);
+              checkCloseStatus(webSocket, closeStatus, closeReason);
               asyncEnd();
             });
         }, onDone: () {
@@ -85,10 +87,7 @@
                 }
               },
               onDone: () {
-                Expect.equals(closeStatus == null
-                              ? WebSocketStatus.NO_STATUS_RECEIVED
-                              : closeStatus, webSocket.closeCode);
-                Expect.equals("", webSocket.closeReason);
+                checkCloseStatus(webSocket, closeStatus, closeReason);
                 closeCount++;
                 if (closeCount == totalConnections) {
                   server.close();
@@ -119,10 +118,7 @@
               }
             },
             onDone: () {
-              Expect.equals(closeStatus == null
-                            ? WebSocketStatus.NO_STATUS_RECEIVED
-                            : closeStatus, webSocket.closeCode);
-              Expect.equals("", webSocket.closeReason);
+              checkCloseStatus(webSocket, closeStatus, closeReason);
               closeCount++;
               if (closeCount == totalConnections) {
                 server.close();
@@ -136,12 +132,7 @@
             webSocket.listen(
                 webSocket.add,
                 onDone: () {
-                  Expect.equals(closeStatus == null
-                                ? WebSocketStatus.NO_STATUS_RECEIVED
-                                : closeStatus, webSocket.closeCode);
-                  Expect.equals(closeReason == null
-                                ? ""
-                                : closeReason, webSocket.closeReason);
+                  checkCloseStatus(webSocket, closeStatus, closeReason);
                 });
             });
       }
@@ -363,8 +354,7 @@
               }
             },
             onDone: () {
-              Expect.equals(closeStatus, webSocket.closeCode);
-              Expect.equals("", webSocket.closeReason);
+              checkCloseStatus(webSocket, closeStatus, closeReason);
               closeCount++;
               if (closeCount == totalConnections) {
                 server.close();
