diff --git a/Yesod/Handler.hs b/Yesod/Handler.hs
--- a/Yesod/Handler.hs
+++ b/Yesod/Handler.hs
@@ -438,6 +438,12 @@
         newWaiReq = oldWaiReq { W.requestBody = mempty }
         newReq    = oldReq { reqWaiRequest = newWaiReq
                            , reqBodySize   = 0 }
+        clearedOldHandlerData =
+          oldHandlerData { handlerRequest = err "handlerRequest never here"
+                         , handlerState   = err "handlerState never here" }
+            where
+              err :: String -> a
+              err = error . ("handlerToIO: clearedOldHandlerData/" ++)
     newState <- liftIO $ do
       oldState <- I.readIORef (handlerState oldHandlerData)
       return $ oldState { ghsRBC = Nothing
@@ -450,8 +456,9 @@
       -- The state IORef needs to be created here, otherwise it
       -- will be shared by different invocations of this function.
       newStateIORef <- I.newIORef newState
-      runResourceT $ f oldHandlerData { handlerRequest = newReq
-                                      , handlerState   = newStateIORef }
+      runResourceT $ f clearedOldHandlerData
+                         { handlerRequest = newReq
+                         , handlerState   = newStateIORef }
 
 
 -- | Function used internally by Yesod in the process of converting a
@@ -750,7 +757,7 @@
 --
 -- Note: although the value used for key and path is 'Text', you should only
 -- use ASCII values to be HTTP compliant.
-deleteCookie :: Text -- ^ key 
+deleteCookie :: Text -- ^ key
              -> Text -- ^ path
              -> GHandler sub master ()
 deleteCookie a = addHeader . DeleteCookie (encodeUtf8 a) . encodeUtf8
diff --git a/yesod-core.cabal b/yesod-core.cabal
--- a/yesod-core.cabal
+++ b/yesod-core.cabal
@@ -1,5 +1,5 @@
 name:            yesod-core
-version:         1.1.1
+version:         1.1.1.1
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
