diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Changelog for wai-extra
 
+## 3.0.29.2
+
+* flush SSE headers early [#804](https://github.com/yesodweb/wai/pull/804)
+
 ## 3.0.29.1
 
 * Fix `Network.Wai.Test.request` always sending an empty request body [#794](https://github.com/yesodweb/wai/pull/794)
diff --git a/Network/Wai/EventSource.hs b/Network/Wai/EventSource.hs
--- a/Network/Wai/EventSource.hs
+++ b/Network/Wai/EventSource.hs
@@ -37,11 +37,13 @@
     sendResponse $ responseStream
         status200
         [(hContentType, "text/event-stream")]
-        $ \sendChunk flush -> fix $ \loop -> do
-            se <- src
-            case eventToBuilder se of
-                Nothing -> return ()
-                Just b  -> sendChunk b >> flush >> loop
+        $ \sendChunk flush -> do
+            flush
+            fix $ \loop -> do
+                se <- src
+                case eventToBuilder se of
+                    Nothing -> return ()
+                    Just b  -> sendChunk b >> flush >> loop
 
 -- | Make a new WAI EventSource application with a handler that emits events.
 --
diff --git a/wai-extra.cabal b/wai-extra.cabal
--- a/wai-extra.cabal
+++ b/wai-extra.cabal
@@ -1,5 +1,5 @@
 Name:                wai-extra
-Version:             3.0.29.1
+Version:             3.0.29.2
 Synopsis:            Provides some basic WAI handlers and middleware.
 description:
   Provides basic WAI handler and middleware functionality:
