diff --git a/src/event/SocketEvent.cxx b/src/event/SocketEvent.cxx
index eba2f32b5..a4e04f072 100644
--- a/src/event/SocketEvent.cxx
+++ b/src/event/SocketEvent.cxx
@@ -53,7 +53,8 @@ SocketEvent::Close() noexcept
 	if (!fd.IsDefined())
 		return;
 
-	Steal().Close();
+	loop.AbandonFD(fd.Get());
+	fd.Close();
 }
 
 bool