diff --git a/basis/io/backend/windows/windows.factor b/basis/io/backend/windows/windows.factor
old mode 100644
new mode 100755
index 0e0a803679..471cab0950
--- a/basis/io/backend/windows/windows.factor
+++ b/basis/io/backend/windows/windows.factor
@@ -30,9 +30,9 @@ TUPLE: win32-file < win32-handle ptr ;
     win32-file new-win32-handle ;
 
 M: win32-file dispose
-    dup disposed>> [ drop ] [
-        [ cancel-operation ] [ call-next-method ] bi
-    ] if ;
+    [ dup disposed>> [ drop ] [ cancel-operation ] if ]
+    [ call-next-method ]
+    bi ;
 
 HOOK: CreateFile-flags io-backend ( DWORD -- DWORD )
 HOOK: FileArgs-overlapped io-backend ( port -- overlapped/f )
diff --git a/basis/io/sockets/windows/windows.factor b/basis/io/sockets/windows/windows.factor
old mode 100644
new mode 100755
index cf1edc0cb1..37ae1e637b
--- a/basis/io/sockets/windows/windows.factor
+++ b/basis/io/sockets/windows/windows.factor
@@ -30,8 +30,8 @@ TUPLE: win32-socket < win32-file ;
 : <win32-socket> ( handle -- win32-socket )
     win32-socket new-win32-handle ;
 
-M: win32-socket dispose ( stream -- )
-    handle>> closesocket drop ;
+M: win32-socket dispose* ( stream -- )
+    handle>> closesocket socket-error* ;
 
 : unspecific-sockaddr/size ( addrspec -- sockaddr len )
     [ empty-sockaddr/size ] [ protocol-family ] bi pick family<< ;