diff --git a/JavaScript/Web/AnimationFrame.hs b/JavaScript/Web/AnimationFrame.hs
index a2d62f9..9960bbd 100644
--- a/JavaScript/Web/AnimationFrame.hs
+++ b/JavaScript/Web/AnimationFrame.hs
@@ -2,6 +2,7 @@
 {-# LANGUAGE JavaScriptFFI #-}
 {-# LANGUAGE InterruptibleFFI #-}
 {-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE CPP #-}
 
 {- |
      Animation frames are the browser's mechanism for smooth animation.
@@ -64,7 +65,11 @@ cancelAnimationFrame h = js_cancelAnimationFrame h
 
 foreign import javascript unsafe "(() => { return { handle: null, callback: null }; })"
   js_makeAnimationFrameHandle :: IO AnimationFrameHandle
+#ifdef __GHCJS__
 foreign import javascript unsafe "(() => { return { handle: null, callback: $1 }; })"
+#else
+foreign import javascript unsafe "(($1) => { return { handle: null, callback: $1 }; })"
+#endif
   js_makeAnimationFrameHandleCallback :: JSVal -> IO AnimationFrameHandle
 foreign import javascript unsafe "h$animationFrameCancel"
   js_cancelAnimationFrame :: AnimationFrameHandle -> IO ()