diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,15 +1,19 @@
+## 3.2.22
+
+* Fixing large request body in HTTP/2.
+
 ## 3.2.21
 
-* Fixing HTTP/2's timeout handler.
+* Fixing HTTP/2's timeout handler in request's vault.
 
 ## 3.2.20
 
-* Fixing "Thread killed by timeout reaper when sending large HTTP/2 response"
+* Fixing large request body in HTTP/2
   [#593](https://github.com/yesodweb/wai/issues/593)
 
 ## 3.2.19
 
-* Fixing 0-length body in HTTP/2
+* Fixing 0-byte request body in HTTP/2
   [#597](https://github.com/yesodweb/wai/issues/597)
   [#679](https://github.com/yesodweb/wai/issues/679)
 
diff --git a/Network/Wai/Handler/Warp/HTTP2/Worker.hs b/Network/Wai/Handler/Warp/HTTP2/Worker.hs
--- a/Network/Wai/Handler/Warp/HTTP2/Worker.hs
+++ b/Network/Wai/Handler/Warp/HTTP2/Worker.hs
@@ -246,9 +246,15 @@
             setStreamInfo sinfo inp
             T.resume th
             T.tickle th
-            let ii' = ii { threadHandle = th }
-                vaultValue = Vault.insert pauseTimeoutKey (Timeout.pause th) $ vault req
-                req' = req { vault = vaultValue }
+            let !ii' = ii { threadHandle = th }
+                !body = requestBody req
+                !body' = do
+                    T.pause th
+                    bs <- body
+                    T.resume th
+                    return bs
+                !vaultValue = Vault.insert pauseTimeoutKey (Timeout.pause th) $ vault req
+                !req' = req { vault = vaultValue, requestBody = body' }
             app req' $ responder ii' reqvt tcont strm req'
         cont1 <- case ex of
             Right ResponseReceived -> return True
diff --git a/warp.cabal b/warp.cabal
--- a/warp.cabal
+++ b/warp.cabal
@@ -1,5 +1,5 @@
 Name:                warp
-Version:             3.2.21
+Version:             3.2.22
 Synopsis:            A fast, light-weight web server for WAI applications.
 License:             MIT
 License-file:        LICENSE
