diff --git a/lib/plat/windows/windows-service.c b/lib/plat/windows/windows-service.c
index 9422a0b29e50fcdf721fa1b3bdeb7bdaee29e6b2..cf8c9a388ede9937ecb5ebc98cda9573c3452fd0 100644
--- a/lib/plat/windows/windows-service.c
+++ b/lib/plat/windows/windows-service.c
@@ -90,6 +90,10 @@ _lws_plat_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
 		n = lws_service_fd(context, pfd);
 		if (n < 0)
 			return -1;
+
+		/* Force WSAWaitForMultipleEvents() to check events and then return immediately. */
+		timeout_ms = 0;
+
 		/* if something closed, retry this slot */
 		if (n)
 			i--;