diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,10 @@
 
 See full history at: <https://github.com/faylang/fay/commits>
 
+#### 0.20.1.1 (2014-06-17)
+
+* Don't cache the `main` thunk in the generated `main` call.
+
 ### 0.20.1.0 (2014-06-14)
 
 * Add default case for UTCTime in Fay.Convert using the aeson instances. Note that this serializes to a json string so you won't be able to deserialize it as a separate type (such as Date) when using `Automatic` in Fay.
diff --git a/fay.cabal b/fay.cabal
--- a/fay.cabal
+++ b/fay.cabal
@@ -1,5 +1,5 @@
 name:                fay
-version:             0.20.1.0
+version:             0.20.1.1
 synopsis:            A compiler for Fay, a Haskell subset that compiles to JavaScript.
 description:         Fay is a proper subset of Haskell which is type-checked
                      with GHC, and compiled to JavaScript. It is lazy, pure, has a Fay monad,
diff --git a/src/Fay.hs b/src/Fay.hs
--- a/src/Fay.hs
+++ b/src/Fay.hs
@@ -144,7 +144,7 @@
       ,jscode
       ,if not (configLibrary config)
           then unlines [";"
-                       ,"Fay$$_(" ++ modulename ++ ".main);"
+                       ,"Fay$$_(" ++ modulename ++ ".main,true);"
                        ]
           else ""
       ]
diff --git a/tests/MainThunk.hs b/tests/MainThunk.hs
new file mode 100644
--- /dev/null
+++ b/tests/MainThunk.hs
@@ -0,0 +1,10 @@
+import FFI
+
+main = do putStrLn "Hey ho!"
+          setTimeout 500 doThing
+          doThing
+
+doThing = putStrLn "Hello, World!"
+
+setTimeout :: Int -> (Fay ()) -> Fay ()
+setTimeout = ffi "(function (f,i) { var id = setTimeout(function () { f(id); }, i); return id; })(%2,%1)"
diff --git a/tests/MainThunk.res b/tests/MainThunk.res
new file mode 100644
--- /dev/null
+++ b/tests/MainThunk.res
@@ -0,0 +1,3 @@
+Hey ho!
+Hello, World!
+Hello, World!
