diff --git a/runtime/bin/dartutils.cc b/runtime/bin/dartutils.cc
index d73c065..5f2e056 100644
--- a/runtime/bin/dartutils.cc
+++ b/runtime/bin/dartutils.cc
@@ -680,9 +680,6 @@
   Dart_Handle type = GetDartType(kIOLibURL, "OSError");
   ASSERT(!Dart_IsError(type));
   Dart_Handle args[2];
-  if (os_error->code() == 0) {
-    FATAL("Fatal error OSError (code : 0)  DartUtils::NewDartOSError");
-  }
   args[0] = NewString(os_error->message());
   args[1] = Dart_NewInteger(os_error->code());
   return Dart_New(type, Dart_Null(), 2, args);
diff --git a/runtime/bin/socket.cc b/runtime/bin/socket.cc
index 708bda4..21bfadf 100644
--- a/runtime/bin/socket.cc
+++ b/runtime/bin/socket.cc
@@ -914,18 +914,7 @@
       Socket::GetSocketIdNativeField(Dart_GetNativeArgument(args, 0));
   OSError os_error;
   SocketBase::GetError(socket->fd(), &os_error);
-  if (os_error.code() != 0) {
-    Dart_SetReturnValue(args, DartUtils::NewDartOSError(&os_error));
-  } else {
-    Dart_SetReturnValue(args, Dart_Null());
-  }
-}
-
-void FUNCTION_NAME(Socket_Fatal)(Dart_NativeArguments args) {
-  Dart_Handle msg = Dart_GetNativeArgument(args, 0);
-  const char* msgStr =
-      (!Dart_IsNull(msg)) ? DartUtils::GetStringValue(msg) : nullptr;
-  FATAL("Fatal error in dart:io (socket): %s", msgStr);
+  Dart_SetReturnValue(args, DartUtils::NewDartOSError(&os_error));
 }
 
 void FUNCTION_NAME(Socket_GetFD)(Dart_NativeArguments args) {
diff --git a/sdk/lib/_internal/vm/bin/socket_patch.dart b/sdk/lib/_internal/vm/bin/socket_patch.dart
index d0bddf8..7c9925a 100644
--- a/sdk/lib/_internal/vm/bin/socket_patch.dart
+++ b/sdk/lib/_internal/vm/bin/socket_patch.dart
@@ -877,8 +877,8 @@
         // the SO_ERROR option at level SOL_SOCKET to determine whether
         // connect() completed successfully (SO_ERROR is zero) or
         // unsuccessfully.
-        final osError = socket.nativeGetError();
-        if (osError != null) {
+        final OSError osError = socket.nativeGetError();
+        if (osError.errorCode != 0) {
           socket.close();
           error ??= osError;
           connectNext();
@@ -1404,12 +1404,8 @@
 
         if (i == errorEvent) {
           if (!isClosing) {
-            final osError = nativeGetError();
-            if (osError == null) {
-              _nativeFatal("Reporting error with OSError code of 0");
-            } else {
-              reportError(osError, null, osError.message);
-            }
+            final err = nativeGetError();
+            reportError(err, null, err.message);
           }
         } else if (!isClosed) {
           // If the connection is closed right after it's accepted, there's a
@@ -1692,7 +1688,7 @@
   @pragma("vm:external-name", "Socket_GetFD")
   external int get fd;
   @pragma("vm:external-name", "Socket_GetError")
-  external OSError? nativeGetError();
+  external OSError nativeGetError();
   @pragma("vm:external-name", "Socket_GetOption")
   external nativeGetOption(int option, int protocol);
   @pragma("vm:external-name", "Socket_GetRawOption")
@@ -1707,8 +1703,6 @@
   @pragma("vm:external-name", "Socket_LeaveMulticast")
   external void nativeLeaveMulticast(
       Uint8List addr, Uint8List? interfaceAddr, int interfaceIndex);
-  @pragma("vm:external-name", "Socket_Fatal")
-  external static void _nativeFatal(msg);
 }
 
 class _RawServerSocket extends Stream<RawSocket> implements RawServerSocket {
diff --git a/tools/VERSION b/tools/VERSION
index d9a3698..52b8d5b 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 17
 PATCH 0
-PRERELEASE 263
+PRERELEASE 264
 PRERELEASE_PATCH 0
\ No newline at end of file
