diff --git a/ghcjs-dom-jsffi.cabal b/ghcjs-dom-jsffi.cabal
--- a/ghcjs-dom-jsffi.cabal
+++ b/ghcjs-dom-jsffi.cabal
@@ -1,5 +1,5 @@
 name: ghcjs-dom-jsffi
-version: 0.9.2.0
+version: 0.9.4.0
 cabal-version: >=1.24
 build-type: Simple
 license: MIT
@@ -51,6 +51,10 @@
           GHCJS.DOM.JSFFI.NavigatorUserMediaError
           GHCJS.DOM.JSFFI.PositionError
           GHCJS.DOM.JSFFI.RTCPeerConnectionError
+          GHCJS.DOM.JSFFI.SpeechGrammar
+          GHCJS.DOM.JSFFI.SpeechRecognition
+          GHCJS.DOM.JSFFI.SpeechRecognitionError
+          GHCJS.DOM.JSFFI.SpeechRecognitionEvent
           GHCJS.DOM.JSFFI.SQLError
           GHCJS.DOM.JSFFI.SQLTransaction
           GHCJS.DOM.JSFFI.Window
diff --git a/src/GHCJS/DOM/EventM.hs b/src/GHCJS/DOM/EventM.hs
--- a/src/GHCJS/DOM/EventM.hs
+++ b/src/GHCJS/DOM/EventM.hs
@@ -17,7 +17,11 @@
 , removeListener
 , releaseListener
 , on
--- * DOM Event interface
+, onSync
+, onAsync
+, onTheseSync
+, onTheseAsync
+-- * Event interface
 , event
 , eventTarget
 , target
@@ -108,13 +112,13 @@
 
 -- | Add an EventListener to an EventTarget.
 addListener :: (IsEventTarget t, IsEvent e) => t -> EventName t e -> SaferEventListener t e -> Bool -> IO ()
-addListener target (EventName eventName) (SaferEventListener l) useCapture =
-    addEventListener target eventName (Just l) useCapture
+addListener target eventName (SaferEventListener l) useCapture =
+    addEventListener target (eventNameString eventName) (Just l) useCapture
 
 -- | Remove an EventListener from an EventTarget.
 removeListener :: (IsEventTarget t, IsEvent e) => t -> EventName t e -> SaferEventListener t e -> Bool -> IO ()
-removeListener target (EventName eventName) (SaferEventListener l) useCapture =
-    removeEventListener target eventName (Just l) useCapture
+removeListener target eventName (SaferEventListener l) useCapture =
+    removeEventListener target (eventNameString eventName) (Just l) useCapture
 
 -- | Release the listener (deallocates callbacks).
 releaseListener :: (IsEventTarget t, IsEvent e) => SaferEventListener t e -> IO ()
@@ -123,9 +127,9 @@
 -- | Shortcut for create, add and release:
 --
 -- @
--- releaseAction <- on element 'GHCJS.DOM.JSFFI.Generated.Document.click' $ do
---     Just w <- 'GHCJS.DOM.currentWindow'
---     'GHCJS.DOM.JSFFI.Generated.Window.alert' w "I was clicked!"
+-- releaseAction <- on element 'GHCJS.DOM.Document.click' $ do
+--     w <- 'GHCJS.DOM.currentWindowUnchecked'
+--     'GHCJS.DOM.Window.alert' w "I was clicked!"
 -- -- remove click handler again
 -- releaseAction
 -- @
@@ -134,17 +138,50 @@
    -> EventName t e -- ^ event
    -> EventM t e () -- ^ action
    -> IO (IO ())    -- ^ @IO@ action that removes the listener from the element
-on target eventName callback = do
-    l <- newListener callback
+on target eventName@(EventNameSyncDefault _) = onSync target eventName
+on target eventName@(EventNameAsyncDefault _) = onAsync target eventName
+
+-- | Like 'on' but always uses 'newListenerSync'
+onSync :: (IsEventTarget t, IsEvent e)
+   => t             -- ^ target
+   -> EventName t e -- ^ event
+   -> EventM t e () -- ^ action
+   -> IO (IO ())    -- ^ @IO@ action that removes the listener from the element
+onSync target eventName callback = do
+    l <- newListenerSync callback
     addListener target eventName l False
     return (removeListener target eventName l False >> releaseListener l)
 
--- | 'on' for multiple targets & events.
+-- | Like 'on' but uses 'newListenerAsync'
+onAsync :: (IsEventTarget t, IsEvent e)
+   => t             -- ^ target
+   -> EventName t e -- ^ event
+   -> EventM t e () -- ^ action
+   -> IO (IO ())    -- ^ @IO@ action that removes the listener from the element
+onAsync target eventName callback = do
+    l <- newListenerAsync callback
+    addListener target eventName l False
+    return (removeListener target eventName l False >> releaseListener l)
+
+-- | 'onSync' for multiple targets & events.
 --
 --   The returned @IO@ action removes them all at once.
-onThese :: (IsEventTarget t, IsEvent e) => [(t, EventName t e)] -> EventM t e () -> IO (IO ())
-onThese targetsAndEventNames callback = do
-    l <- newListener callback
+onTheseSync :: (IsEventTarget t, IsEvent e) => [(t, EventName t e)] -> EventM t e () -> IO (IO ())
+onTheseSync targetsAndEventNames callback = do
+    l <- newListenerSync callback
+    forM_ targetsAndEventNames $ \(target, eventName) ->
+        addListener target eventName l False
+    return (do
+        forM_ targetsAndEventNames (\(target, eventName) ->
+            removeListener target eventName l False)
+        releaseListener l)
+
+-- | 'onAsync' for multiple targets & events.
+--
+--   The returned @IO@ action removes them all at once.
+onTheseAsync :: (IsEventTarget t, IsEvent e) => [(t, EventName t e)] -> EventM t e () -> IO (IO ())
+onTheseAsync targetsAndEventNames callback = do
+    l <- newListenerAsync callback
     forM_ targetsAndEventNames $ \(target, eventName) ->
         addListener target eventName l False
     return (do
diff --git a/src/GHCJS/DOM/EventTargetClosures.hs b/src/GHCJS/DOM/EventTargetClosures.hs
--- a/src/GHCJS/DOM/EventTargetClosures.hs
+++ b/src/GHCJS/DOM/EventTargetClosures.hs
@@ -7,7 +7,9 @@
          --   lead to confusion.
          EventName(..)
        , SaferEventListener(..)
+       , eventNameString
        , unsafeEventName
+       , unsafeEventNameAsync
        -- * Creation and Destruction
        -- | __Note:__ Don’t forget to release your event listeners, or you will leak memory.
        , eventListenerNew
@@ -31,8 +33,12 @@
 --
 --   Many @GHCJS.DOM@ modules export @EventName@s, for example
 --   "GHCJS.DOM.JSFFI.Generated.Window".
-newtype EventName t e = EventName DOMString
+data EventName t e = EventNameSyncDefault DOMString | EventNameAsyncDefault DOMString
 
+eventNameString :: EventName t e -> DOMString
+eventNameString (EventNameSyncDefault s) = s
+eventNameString (EventNameAsyncDefault s) = s
+
 -- | Plain JS 'EventListener' that carries the same phantom types as 'EventName'.
 newtype SaferEventListener t e = SaferEventListener EventListener
 
@@ -46,7 +52,10 @@
 
 -- | Forces the phantom parameters.
 unsafeEventName :: DOMString -> EventName t e
-unsafeEventName = EventName
+unsafeEventName = EventNameSyncDefault
+
+unsafeEventNameAsync :: DOMString -> EventName t e
+unsafeEventNameAsync = EventNameAsyncDefault
 
 -- | Create an EventListener that will try to run the callback synchronously,
 --   but fork a thread if it takes too long to execute ('ContinueAsync').
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ANGLEInstancedArrays.hs b/src/GHCJS/DOM/JSFFI/Generated/ANGLEInstancedArrays.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ANGLEInstancedArrays.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ANGLEInstancedArrays.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AbstractWorker.hs b/src/GHCJS/DOM/JSFFI/Generated/AbstractWorker.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AbstractWorker.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AbstractWorker.hs
@@ -23,11 +23,11 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AbstractWorker.onerror Mozilla AbstractWorker.onerror documentation> 
 error ::
       (IsAbstractWorker self, IsEventTarget self) =>
         EventName self UIEvent
-error = unsafeEventName (toJSString "error")
+error = unsafeEventNameAsync (toJSString "error")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AnalyserNode.hs b/src/GHCJS/DOM/JSFFI/Generated/AnalyserNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AnalyserNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AnalyserNode.hs
@@ -31,7 +31,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
@@ -73,7 +73,7 @@
       (js_getByteTimeDomainData self
          (maybeToOptional (fmap toUint8Array array)))
  
-foreign import javascript unsafe "$1[\"fftSize\"] = $2;"
+foreign import javascript safe "$1[\"fftSize\"] = $2;"
         js_setFftSize :: AnalyserNode -> Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.fftSize Mozilla AnalyserNode.fftSize documentation> 
@@ -94,7 +94,7 @@
 getFrequencyBinCount :: (MonadIO m) => AnalyserNode -> m Word
 getFrequencyBinCount self = liftIO (js_getFrequencyBinCount self)
  
-foreign import javascript unsafe "$1[\"minDecibels\"] = $2;"
+foreign import javascript safe "$1[\"minDecibels\"] = $2;"
         js_setMinDecibels :: AnalyserNode -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.minDecibels Mozilla AnalyserNode.minDecibels documentation> 
@@ -108,7 +108,7 @@
 getMinDecibels :: (MonadIO m) => AnalyserNode -> m Double
 getMinDecibels self = liftIO (js_getMinDecibels self)
  
-foreign import javascript unsafe "$1[\"maxDecibels\"] = $2;"
+foreign import javascript safe "$1[\"maxDecibels\"] = $2;"
         js_setMaxDecibels :: AnalyserNode -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.maxDecibels Mozilla AnalyserNode.maxDecibels documentation> 
@@ -122,7 +122,7 @@
 getMaxDecibels :: (MonadIO m) => AnalyserNode -> m Double
 getMaxDecibels self = liftIO (js_getMaxDecibels self)
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"smoothingTimeConstant\"] = $2;" js_setSmoothingTimeConstant
         :: AnalyserNode -> Double -> IO ()
 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Animatable.hs b/src/GHCJS/DOM/JSFFI/Generated/Animatable.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Animatable.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Animatable.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"getAnimations\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Animation.hs b/src/GHCJS/DOM/JSFFI/Generated/Animation.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Animation.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Animation.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AnimationEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/AnimationEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AnimationEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AnimationEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePayError.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePayError.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ApplePayError.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ApplePayError.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentAuthorizedEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentAuthorizedEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentAuthorizedEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentAuthorizedEvent.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"payment\"]" js_getPayment ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentMethodSelectedEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentMethodSelectedEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentMethodSelectedEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentMethodSelectedEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"paymentMethod\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePaySession.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePaySession.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ApplePaySession.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ApplePaySession.hs
@@ -49,10 +49,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe
+foreign import javascript safe
         "new window[\"ApplePaySession\"]($1,\n$2)" js_newApplePaySession ::
         Word -> ApplePayPaymentRequest -> IO ApplePaySession
 
@@ -62,94 +62,89 @@
 newApplePaySession version paymentRequest
   = liftIO (js_newApplePaySession version paymentRequest)
  
-foreign import javascript unsafe
-        "($1[\"supportsVersion\"]($2) ? 1 : 0)" js_supportsVersion ::
-        ApplePaySession -> Word -> IO Bool
+foreign import javascript safe
+        "(window[\"ApplePaySession\"][\"supportsVersion\"]($1) ? 1 : 0)"
+        js_supportsVersion :: Word -> IO Bool
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.supportsVersion Mozilla ApplePaySession.supportsVersion documentation> 
-supportsVersion :: (MonadIO m) => ApplePaySession -> Word -> m Bool
-supportsVersion self version
-  = liftIO (js_supportsVersion self version)
+supportsVersion :: (MonadIO m) => Word -> m Bool
+supportsVersion version = liftIO (js_supportsVersion version)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.supportsVersion Mozilla ApplePaySession.supportsVersion documentation> 
-supportsVersion_ :: (MonadIO m) => ApplePaySession -> Word -> m ()
-supportsVersion_ self version
-  = liftIO (void (js_supportsVersion self version))
+supportsVersion_ :: (MonadIO m) => Word -> m ()
+supportsVersion_ version
+  = liftIO (void (js_supportsVersion version))
  
-foreign import javascript unsafe
-        "($1[\"canMakePayments\"]() ? 1 : 0)" js_canMakePayments ::
-        ApplePaySession -> IO Bool
+foreign import javascript safe
+        "(window[\"ApplePaySession\"][\"canMakePayments\"]() ? 1 : 0)"
+        js_canMakePayments :: IO Bool
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePayments Mozilla ApplePaySession.canMakePayments documentation> 
-canMakePayments :: (MonadIO m) => ApplePaySession -> m Bool
-canMakePayments self = liftIO (js_canMakePayments self)
+canMakePayments :: (MonadIO m) => m Bool
+canMakePayments = liftIO (js_canMakePayments)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePayments Mozilla ApplePaySession.canMakePayments documentation> 
-canMakePayments_ :: (MonadIO m) => ApplePaySession -> m ()
-canMakePayments_ self = liftIO (void (js_canMakePayments self))
+canMakePayments_ :: (MonadIO m) => m ()
+canMakePayments_ = liftIO (void (js_canMakePayments))
  
 foreign import javascript interruptible
-        "$1[\"canMakePaymentsWithActiveCard\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);});"
-        js_canMakePaymentsWithActiveCard ::
-        ApplePaySession -> JSString -> IO (JSVal, Bool)
+        "window[\"ApplePaySession\"][\"canMakePaymentsWithActiveCard\"]($1).then(function(s) { $c(null, s);}, function(e) { $c(e, null);});"
+        js_canMakePaymentsWithActiveCard :: JSString -> IO (JSVal, Bool)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePaymentsWithActiveCard Mozilla ApplePaySession.canMakePaymentsWithActiveCard documentation> 
 canMakePaymentsWithActiveCard ::
                               (MonadIO m, ToJSString merchantIdentifier) =>
-                                ApplePaySession -> merchantIdentifier -> m Bool
-canMakePaymentsWithActiveCard self merchantIdentifier
+                                merchantIdentifier -> m Bool
+canMakePaymentsWithActiveCard merchantIdentifier
   = liftIO
-      ((js_canMakePaymentsWithActiveCard self
-          (toJSString merchantIdentifier))
+      ((js_canMakePaymentsWithActiveCard (toJSString merchantIdentifier))
          >>= checkPromiseResult)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePaymentsWithActiveCard Mozilla ApplePaySession.canMakePaymentsWithActiveCard documentation> 
 canMakePaymentsWithActiveCard_ ::
                                (MonadIO m, ToJSString merchantIdentifier) =>
-                                 ApplePaySession -> merchantIdentifier -> m ()
-canMakePaymentsWithActiveCard_ self merchantIdentifier
+                                 merchantIdentifier -> m ()
+canMakePaymentsWithActiveCard_ merchantIdentifier
   = liftIO
       (void
-         (js_canMakePaymentsWithActiveCard self
-            (toJSString merchantIdentifier)))
+         (js_canMakePaymentsWithActiveCard (toJSString merchantIdentifier)))
  
 foreign import javascript interruptible
-        "$1[\"openPaymentSetup\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);});"
-        js_openPaymentSetup ::
-        ApplePaySession -> JSString -> IO (JSVal, Bool)
+        "window[\"ApplePaySession\"][\"openPaymentSetup\"]($1).then(function(s) { $c(null, s);}, function(e) { $c(e, null);});"
+        js_openPaymentSetup :: JSString -> IO (JSVal, Bool)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.openPaymentSetup Mozilla ApplePaySession.openPaymentSetup documentation> 
 openPaymentSetup ::
                  (MonadIO m, ToJSString merchantIdentifier) =>
-                   ApplePaySession -> merchantIdentifier -> m Bool
-openPaymentSetup self merchantIdentifier
+                   merchantIdentifier -> m Bool
+openPaymentSetup merchantIdentifier
   = liftIO
-      ((js_openPaymentSetup self (toJSString merchantIdentifier)) >>=
+      ((js_openPaymentSetup (toJSString merchantIdentifier)) >>=
          checkPromiseResult)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.openPaymentSetup Mozilla ApplePaySession.openPaymentSetup documentation> 
 openPaymentSetup_ ::
                   (MonadIO m, ToJSString merchantIdentifier) =>
-                    ApplePaySession -> merchantIdentifier -> m ()
-openPaymentSetup_ self merchantIdentifier
+                    merchantIdentifier -> m ()
+openPaymentSetup_ merchantIdentifier
   = liftIO
-      (void (js_openPaymentSetup self (toJSString merchantIdentifier)))
+      (void (js_openPaymentSetup (toJSString merchantIdentifier)))
  
-foreign import javascript unsafe "$1[\"begin\"]()" js_begin ::
+foreign import javascript safe "$1[\"begin\"]()" js_begin ::
         ApplePaySession -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.begin Mozilla ApplePaySession.begin documentation> 
 begin :: (MonadIO m) => ApplePaySession -> m ()
 begin self = liftIO (js_begin self)
  
-foreign import javascript unsafe "$1[\"abort\"]()" js_abort ::
+foreign import javascript safe "$1[\"abort\"]()" js_abort ::
         ApplePaySession -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.abort Mozilla ApplePaySession.abort documentation> 
 abort :: (MonadIO m) => ApplePaySession -> m ()
 abort self = liftIO (js_abort self)
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"completeMerchantValidation\"]($2)"
         js_completeMerchantValidation :: ApplePaySession -> JSVal -> IO ()
 
@@ -163,7 +158,7 @@
          \ merchantSession' ->
            js_completeMerchantValidation self merchantSession')
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"completeShippingMethodSelection\"]($2)"
         js_completeShippingMethodSelectionUpdate ::
         ApplePaySession -> ApplePayShippingMethodUpdate -> IO ()
@@ -175,7 +170,7 @@
 completeShippingMethodSelectionUpdate self update
   = liftIO (js_completeShippingMethodSelectionUpdate self update)
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"completeShippingContactSelection\"]($2)"
         js_completeShippingContactSelectionUpdate ::
         ApplePaySession -> ApplePayShippingContactUpdate -> IO ()
@@ -187,7 +182,7 @@
 completeShippingContactSelectionUpdate self update
   = liftIO (js_completeShippingContactSelectionUpdate self update)
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"completePaymentMethodSelection\"]($2)"
         js_completePaymentMethodSelectionUpdate ::
         ApplePaySession -> ApplePayPaymentMethodUpdate -> IO ()
@@ -199,7 +194,7 @@
 completePaymentMethodSelectionUpdate self update
   = liftIO (js_completePaymentMethodSelectionUpdate self update)
  
-foreign import javascript unsafe "$1[\"completePayment\"]($2)"
+foreign import javascript safe "$1[\"completePayment\"]($2)"
         js_completePaymentResult ::
         ApplePaySession -> ApplePayPaymentAuthorizationResult -> IO ()
 
@@ -210,7 +205,7 @@
 completePaymentResult self result
   = liftIO (js_completePaymentResult self result)
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"completeShippingMethodSelection\"]($2,\n$3, $4)"
         js_completeShippingMethodSelection ::
         ApplePaySession -> Word -> ApplePayLineItem -> JSVal -> IO ()
@@ -227,7 +222,7 @@
            js_completeShippingMethodSelection self status newTotal
              newLineItems')
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"completeShippingContactSelection\"]($2,\n$3, $4, $5)"
         js_completeShippingContactSelection ::
         ApplePaySession ->
@@ -251,7 +246,7 @@
              newTotal
              newLineItems')
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"completePaymentMethodSelection\"]($2,\n$3)"
         js_completePaymentMethodSelection ::
         ApplePaySession -> ApplePayLineItem -> JSVal -> IO ()
@@ -266,7 +261,7 @@
          \ newLineItems' ->
            js_completePaymentMethodSelection self newTotal newLineItems')
  
-foreign import javascript unsafe "$1[\"completePayment\"]($2)"
+foreign import javascript safe "$1[\"completePayment\"]($2)"
         js_completePayment :: ApplePaySession -> Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completePayment Mozilla ApplePaySession.completePayment documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingContactSelectedEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingContactSelectedEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingContactSelectedEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingContactSelectedEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"shippingContact\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingMethodSelectedEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingMethodSelectedEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingMethodSelectedEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingMethodSelectedEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"shippingMethod\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePayValidateMerchantEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePayValidateMerchantEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ApplePayValidateMerchantEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ApplePayValidateMerchantEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"validationURL\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplicationCache.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplicationCache.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ApplicationCache.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ApplicationCache.hs
@@ -27,17 +27,17 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"update\"]()" js_update ::
+foreign import javascript safe "$1[\"update\"]()" js_update ::
         ApplicationCache -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.update Mozilla ApplicationCache.update documentation> 
 update :: (MonadIO m) => ApplicationCache -> m ()
 update self = liftIO (js_update self)
  
-foreign import javascript unsafe "$1[\"swapCache\"]()" js_swapCache
+foreign import javascript safe "$1[\"swapCache\"]()" js_swapCache
         :: ApplicationCache -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.swapCache Mozilla ApplicationCache.swapCache documentation> 
@@ -70,7 +70,7 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onerror Mozilla ApplicationCache.onerror documentation> 
 error :: EventName ApplicationCache UIEvent
-error = unsafeEventName (toJSString "error")
+error = unsafeEventNameAsync (toJSString "error")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onnoupdate Mozilla ApplicationCache.onnoupdate documentation> 
 noUpdate :: EventName ApplicationCache Event
@@ -82,7 +82,7 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onprogress Mozilla ApplicationCache.onprogress documentation> 
 progress :: EventName ApplicationCache ProgressEvent
-progress = unsafeEventName (toJSString "progress")
+progress = unsafeEventNameAsync (toJSString "progress")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onupdateready Mozilla ApplicationCache.onupdateready documentation> 
 updateReady :: EventName ApplicationCache Event
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Attr.hs b/src/GHCJS/DOM/JSFFI/Generated/Attr.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Attr.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Attr.hs
@@ -28,7 +28,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"namespaceURI\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioBuffer.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioBuffer.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioBuffer.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioBuffer.hs
@@ -26,10 +26,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"getChannelData\"]($2)"
+foreign import javascript safe "$1[\"getChannelData\"]($2)"
         js_getChannelData :: AudioBuffer -> Word -> IO Float32Array
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.getChannelData Mozilla AudioBuffer.getChannelData documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioBufferCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioBufferCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioBufferCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioBufferCallback.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferCallback Mozilla AudioBufferCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioBufferSourceNode.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioBufferSourceNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioBufferSourceNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioBufferSourceNode.hs
@@ -31,11 +31,11 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"start\"]($2, $3, $4)"
-        js_start ::
+foreign import javascript safe "$1[\"start\"]($2, $3, $4)" js_start
+        ::
         AudioBufferSourceNode ->
           Optional Double -> Optional Double -> Optional Double -> IO ()
 
@@ -49,7 +49,7 @@
       (js_start self (maybeToOptional when) (maybeToOptional grainOffset)
          (maybeToOptional grainDuration))
  
-foreign import javascript unsafe "$1[\"stop\"]($2)" js_stop ::
+foreign import javascript safe "$1[\"stop\"]($2)" js_stop ::
         AudioBufferSourceNode -> Optional Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.stop Mozilla AudioBufferSourceNode.stop documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioContext.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioContext.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioContext.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioContext.hs
@@ -51,7 +51,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
@@ -92,7 +92,7 @@
   = liftIO
       ((js_close (toAudioContext self)) >>= maybeThrowPromiseRejected)
  
-foreign import javascript unsafe "$1[\"createBuffer\"]($2, $3, $4)"
+foreign import javascript safe "$1[\"createBuffer\"]($2, $3, $4)"
         js_createBuffer ::
         AudioContext -> Word -> Word -> Float -> IO AudioBuffer
 
@@ -117,7 +117,7 @@
             numberOfFrames
             sampleRate))
  
-foreign import javascript unsafe "$1[\"createBuffer\"]($2, $3)"
+foreign import javascript safe "$1[\"createBuffer\"]($2, $3)"
         js_createBufferFromArrayBuffer ::
         AudioContext -> ArrayBuffer -> Bool -> IO AudioBuffer
 
@@ -176,7 +176,7 @@
 createBufferSource_ self
   = liftIO (void (js_createBufferSource (toAudioContext self)))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"createMediaElementSource\"]($2)" js_createMediaElementSource
         ::
         AudioContext -> HTMLMediaElement -> IO MediaElementAudioSourceNode
@@ -202,7 +202,7 @@
          (js_createMediaElementSource (toAudioContext self)
             (toHTMLMediaElement mediaElement)))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"createMediaStreamSource\"]($2)" js_createMediaStreamSource ::
         AudioContext -> MediaStream -> IO MediaStreamAudioSourceNode
 
@@ -254,7 +254,7 @@
 createGain_ self
   = liftIO (void (js_createGain (toAudioContext self)))
  
-foreign import javascript unsafe "$1[\"createDelay\"]($2)"
+foreign import javascript safe "$1[\"createDelay\"]($2)"
         js_createDelay :: AudioContext -> Optional Double -> IO DelayNode
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDelay Mozilla AudioContext.createDelay documentation> 
@@ -364,7 +364,7 @@
 createAnalyser_ self
   = liftIO (void (js_createAnalyser (toAudioContext self)))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"createScriptProcessor\"]($2,\n$3, $4)"
         js_createScriptProcessor ::
         AudioContext ->
@@ -408,8 +408,8 @@
 createOscillator_ self
   = liftIO (void (js_createOscillator (toAudioContext self)))
  
-foreign import javascript unsafe
-        "$1[\"createPeriodicWave\"]($2, $3)" js_createPeriodicWave ::
+foreign import javascript safe "$1[\"createPeriodicWave\"]($2, $3)"
+        js_createPeriodicWave ::
         AudioContext -> Float32Array -> Float32Array -> IO PeriodicWave
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPeriodicWave Mozilla AudioContext.createPeriodicWave documentation> 
@@ -433,8 +433,8 @@
          (js_createPeriodicWave (toAudioContext self) (toFloat32Array real)
             (toFloat32Array imag)))
  
-foreign import javascript unsafe
-        "$1[\"createChannelSplitter\"]($2)" js_createChannelSplitter ::
+foreign import javascript safe "$1[\"createChannelSplitter\"]($2)"
+        js_createChannelSplitter ::
         AudioContext -> Optional Word -> IO ChannelSplitterNode
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelSplitter Mozilla AudioContext.createChannelSplitter documentation> 
@@ -455,7 +455,7 @@
          (js_createChannelSplitter (toAudioContext self)
             (maybeToOptional numberOfOutputs)))
  
-foreign import javascript unsafe "$1[\"createChannelMerger\"]($2)"
+foreign import javascript safe "$1[\"createChannelMerger\"]($2)"
         js_createChannelMerger ::
         AudioContext -> Optional Word -> IO ChannelMergerNode
 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioDestinationNode.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioDestinationNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioDestinationNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioDestinationNode.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"maxChannelCount\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioListener.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioListener.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioListener.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioListener.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"setPosition\"]($2, $3, $4)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioNode.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioNode.hs
@@ -30,10 +30,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"connect\"]($2, $3, $4)"
+foreign import javascript safe "$1[\"connect\"]($2, $3, $4)"
         js_connect ::
         AudioNode -> AudioNode -> Optional Word -> Optional Word -> IO ()
 
@@ -47,7 +47,7 @@
          (maybeToOptional output)
          (maybeToOptional input))
  
-foreign import javascript unsafe "$1[\"connect\"]($2, $3)"
+foreign import javascript safe "$1[\"connect\"]($2, $3)"
         js_connectParam ::
         AudioNode -> AudioParam -> Optional Word -> IO ()
 
@@ -60,7 +60,7 @@
       (js_connectParam (toAudioNode self) destination
          (maybeToOptional output))
  
-foreign import javascript unsafe "$1[\"disconnect\"]($2)"
+foreign import javascript safe "$1[\"disconnect\"]($2)"
         js_disconnect :: AudioNode -> Optional Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.disconnect Mozilla AudioNode.disconnect documentation> 
@@ -96,7 +96,7 @@
 getNumberOfOutputs self
   = liftIO (js_getNumberOfOutputs (toAudioNode self))
  
-foreign import javascript unsafe "$1[\"channelCount\"] = $2;"
+foreign import javascript safe "$1[\"channelCount\"] = $2;"
         js_setChannelCount :: AudioNode -> Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelCount Mozilla AudioNode.channelCount documentation> 
@@ -113,7 +113,7 @@
 getChannelCount self
   = liftIO (js_getChannelCount (toAudioNode self))
  
-foreign import javascript unsafe "$1[\"channelCountMode\"] = $2;"
+foreign import javascript safe "$1[\"channelCountMode\"] = $2;"
         js_setChannelCountMode :: AudioNode -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelCountMode Mozilla AudioNode.channelCountMode documentation> 
@@ -135,7 +135,7 @@
   = liftIO
       (fromJSString <$> (js_getChannelCountMode (toAudioNode self)))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"channelInterpretation\"] = $2;" js_setChannelInterpretation
         :: AudioNode -> JSString -> IO ()
 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioParam.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioParam.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioParam.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioParam.hs
@@ -30,7 +30,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"setValueAtTime\"]($2, $3)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioProcessingEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioProcessingEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioProcessingEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioProcessingEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"playbackTime\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioTrack.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioTrack.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioTrack.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"id\"]" js_getId ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioTrackList.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioTrackList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AudioTrackList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioTrackList.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AutocompleteErrorEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/AutocompleteErrorEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/AutocompleteErrorEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/AutocompleteErrorEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BarProp.hs b/src/GHCJS/DOM/JSFFI/Generated/BarProp.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/BarProp.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/BarProp.hs
@@ -21,7 +21,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "($1[\"visible\"] ? 1 : 0)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BasicCredential.hs b/src/GHCJS/DOM/JSFFI/Generated/BasicCredential.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/BasicCredential.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/BasicCredential.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"id\"]" js_getId ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BeforeLoadEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/BeforeLoadEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/BeforeLoadEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/BeforeLoadEvent.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BeforeUnloadEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/BeforeUnloadEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/BeforeUnloadEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/BeforeUnloadEvent.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"returnValue\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BiquadFilterNode.hs b/src/GHCJS/DOM/JSFFI/Generated/BiquadFilterNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/BiquadFilterNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/BiquadFilterNode.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Blob.hs b/src/GHCJS/DOM/JSFFI/Generated/Blob.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Blob.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Blob.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"Blob\"]($1, $2)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BlobCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/BlobCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/BlobCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/BlobCallback.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/BlobCallback Mozilla BlobCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Body.hs b/src/GHCJS/DOM/JSFFI/Generated/Body.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Body.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Body.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript interruptible
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ByteLengthQueuingStrategy.hs b/src/GHCJS/DOM/JSFFI/Generated/ByteLengthQueuingStrategy.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ByteLengthQueuingStrategy.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ByteLengthQueuingStrategy.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSS.hs b/src/GHCJS/DOM/JSFFI/Generated/CSS.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSS.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSS.hs
@@ -23,57 +23,54 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
-        "($1[\"supports\"]($2, $3) ? 1 : 0)" js_supports2 ::
-        CSS -> JSString -> JSString -> IO Bool
+        "(window[\"CSS\"][\"supports\"]($1,\n$2) ? 1 : 0)" js_supports2 ::
+        JSString -> JSString -> IO Bool
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
 supports2 ::
           (MonadIO m, ToJSString property, ToJSString value) =>
-            CSS -> property -> value -> m Bool
-supports2 self property value
-  = liftIO
-      (js_supports2 self (toJSString property) (toJSString value))
+            property -> value -> m Bool
+supports2 property value
+  = liftIO (js_supports2 (toJSString property) (toJSString value))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
 supports2_ ::
            (MonadIO m, ToJSString property, ToJSString value) =>
-             CSS -> property -> value -> m ()
-supports2_ self property value
+             property -> value -> m ()
+supports2_ property value
   = liftIO
-      (void (js_supports2 self (toJSString property) (toJSString value)))
+      (void (js_supports2 (toJSString property) (toJSString value)))
  
-foreign import javascript unsafe "($1[\"supports\"]($2) ? 1 : 0)"
-        js_supports :: CSS -> JSString -> IO Bool
+foreign import javascript unsafe
+        "(window[\"CSS\"][\"supports\"]($1) ? 1 : 0)" js_supports ::
+        JSString -> IO Bool
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
 supports ::
-         (MonadIO m, ToJSString conditionText) =>
-           CSS -> conditionText -> m Bool
-supports self conditionText
-  = liftIO (js_supports self (toJSString conditionText))
+         (MonadIO m, ToJSString conditionText) => conditionText -> m Bool
+supports conditionText
+  = liftIO (js_supports (toJSString conditionText))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
 supports_ ::
-          (MonadIO m, ToJSString conditionText) =>
-            CSS -> conditionText -> m ()
-supports_ self conditionText
-  = liftIO (void (js_supports self (toJSString conditionText)))
+          (MonadIO m, ToJSString conditionText) => conditionText -> m ()
+supports_ conditionText
+  = liftIO (void (js_supports (toJSString conditionText)))
  
-foreign import javascript unsafe "$1[\"escape\"]($2)" js_escape ::
-        CSS -> JSString -> IO JSString
+foreign import javascript unsafe "window[\"CSS\"][\"escape\"]($1)"
+        js_escape :: JSString -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.escape Mozilla CSS.escape documentation> 
 escape ::
        (MonadIO m, ToJSString ident, FromJSString result) =>
-         CSS -> ident -> m result
-escape self ident
-  = liftIO (fromJSString <$> (js_escape self (toJSString ident)))
+         ident -> m result
+escape ident
+  = liftIO (fromJSString <$> (js_escape (toJSString ident)))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.escape Mozilla CSS.escape documentation> 
-escape_ :: (MonadIO m, ToJSString ident) => CSS -> ident -> m ()
-escape_ self ident
-  = liftIO (void (js_escape self (toJSString ident)))
+escape_ :: (MonadIO m, ToJSString ident) => ident -> m ()
+escape_ ident = liftIO (void (js_escape (toJSString ident)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceLoadEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceLoadEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceLoadEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceLoadEvent.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceRule.hs
@@ -22,7 +22,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"style\"]" js_getStyle ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSImportRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSImportRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSImportRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSImportRule.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"href\"]" js_getHref ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframeRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframeRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframeRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframeRule.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"keyText\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframesRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframesRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframesRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframesRule.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"insertRule\"]($2)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSMediaRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSMediaRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSMediaRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSMediaRule.hs
@@ -24,10 +24,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"insertRule\"]($2, $3)"
+foreign import javascript safe "$1[\"insertRule\"]($2, $3)"
         js_insertRule ::
         CSSMediaRule -> Optional JSString -> Optional Word -> IO Word
 
@@ -50,7 +50,7 @@
          (js_insertRule self (toOptionalJSString rule)
             (maybeToOptional index)))
  
-foreign import javascript unsafe "$1[\"deleteRule\"]($2)"
+foreign import javascript safe "$1[\"deleteRule\"]($2)"
         js_deleteRule :: CSSMediaRule -> Optional Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.deleteRule Mozilla CSSMediaRule.deleteRule documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSNamespaceRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSNamespaceRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSNamespaceRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSNamespaceRule.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"namespaceURI\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSPageRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSPageRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSPageRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSPageRule.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"selectorText\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSPrimitiveValue.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSPrimitiveValue.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSPrimitiveValue.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSPrimitiveValue.hs
@@ -37,10 +37,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"setFloatValue\"]($2, $3)"
+foreign import javascript safe "$1[\"setFloatValue\"]($2, $3)"
         js_setFloatValue ::
         CSSPrimitiveValue -> Optional Word -> Optional Float -> IO ()
 
@@ -53,7 +53,7 @@
       (js_setFloatValue self (maybeToOptional unitType)
          (maybeToOptional floatValue))
  
-foreign import javascript unsafe "$1[\"getFloatValue\"]($2)"
+foreign import javascript safe "$1[\"getFloatValue\"]($2)"
         js_getFloatValue :: CSSPrimitiveValue -> Optional Word -> IO Float
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getFloatValue Mozilla CSSPrimitiveValue.getFloatValue documentation> 
@@ -68,7 +68,7 @@
 getFloatValue_ self unitType
   = liftIO (void (js_getFloatValue self (maybeToOptional unitType)))
  
-foreign import javascript unsafe "$1[\"setStringValue\"]($2, $3)"
+foreign import javascript safe "$1[\"setStringValue\"]($2, $3)"
         js_setStringValue ::
         CSSPrimitiveValue -> Optional Word -> Optional JSString -> IO ()
 
@@ -81,7 +81,7 @@
       (js_setStringValue self (maybeToOptional stringType)
          (toOptionalJSString stringValue))
  
-foreign import javascript unsafe "$1[\"getStringValue\"]()"
+foreign import javascript safe "$1[\"getStringValue\"]()"
         js_getStringValue :: CSSPrimitiveValue -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getStringValue Mozilla CSSPrimitiveValue.getStringValue documentation> 
@@ -94,7 +94,7 @@
 getStringValue_ :: (MonadIO m) => CSSPrimitiveValue -> m ()
 getStringValue_ self = liftIO (void (js_getStringValue self))
  
-foreign import javascript unsafe "$1[\"getCounterValue\"]()"
+foreign import javascript safe "$1[\"getCounterValue\"]()"
         js_getCounterValue :: CSSPrimitiveValue -> IO Counter
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getCounterValue Mozilla CSSPrimitiveValue.getCounterValue documentation> 
@@ -105,7 +105,7 @@
 getCounterValue_ :: (MonadIO m) => CSSPrimitiveValue -> m ()
 getCounterValue_ self = liftIO (void (js_getCounterValue self))
  
-foreign import javascript unsafe "$1[\"getRectValue\"]()"
+foreign import javascript safe "$1[\"getRectValue\"]()"
         js_getRectValue :: CSSPrimitiveValue -> IO Rect
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRectValue Mozilla CSSPrimitiveValue.getRectValue documentation> 
@@ -116,7 +116,7 @@
 getRectValue_ :: (MonadIO m) => CSSPrimitiveValue -> m ()
 getRectValue_ self = liftIO (void (js_getRectValue self))
  
-foreign import javascript unsafe "$1[\"getRGBColorValue\"]()"
+foreign import javascript safe "$1[\"getRGBColorValue\"]()"
         js_getRGBColorValue :: CSSPrimitiveValue -> IO RGBColor
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRGBColorValue Mozilla CSSPrimitiveValue.getRGBColorValue documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSRule.hs
@@ -34,7 +34,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern UNKNOWN_RULE = 0
 pattern STYLE_RULE = 1
@@ -59,7 +59,7 @@
 getType :: (MonadIO m, IsCSSRule self) => self -> m Word
 getType self = liftIO (js_getType (toCSSRule self))
  
-foreign import javascript unsafe "$1[\"cssText\"] = $2;"
+foreign import javascript safe "$1[\"cssText\"] = $2;"
         js_setCssText :: CSSRule -> Optional JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSRuleList.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSRuleList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSRuleList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSRuleList.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSStyleDeclaration.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleDeclaration.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSStyleDeclaration.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleDeclaration.hs
@@ -36,7 +36,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"getPropertyValue\"]($2)"
@@ -100,7 +100,7 @@
       (fromJust . nullableToMaybe <$>
          (js_getPropertyCSSValue self (toJSString propertyName)))
  
-foreign import javascript unsafe "$1[\"removeProperty\"]($2)"
+foreign import javascript safe "$1[\"removeProperty\"]($2)"
         js_removeProperty :: CSSStyleDeclaration -> JSString -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.removeProperty Mozilla CSSStyleDeclaration.removeProperty documentation> 
@@ -160,7 +160,7 @@
       (fromJust . fromMaybeJSString <$>
          (js_getPropertyPriority self (toJSString propertyName)))
  
-foreign import javascript unsafe "$1[\"setProperty\"]($2, $3, $4)"
+foreign import javascript safe "$1[\"setProperty\"]($2, $3, $4)"
         js_setProperty ::
         CSSStyleDeclaration ->
           JSString -> JSString -> Optional JSString -> IO ()
@@ -252,7 +252,7 @@
       (void
          (js_isPropertyImplicit self (toOptionalJSString propertyName)))
  
-foreign import javascript unsafe "$1[\"cssText\"] = $2;"
+foreign import javascript safe "$1[\"cssText\"] = $2;"
         js_setCssText :: CSSStyleDeclaration -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.cssText Mozilla CSSStyleDeclaration.cssText documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSStyleRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSStyleRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleRule.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"selectorText\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSStyleSheet.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleSheet.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSStyleSheet.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleSheet.hs
@@ -27,10 +27,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"insertRule\"]($2, $3)"
+foreign import javascript safe "$1[\"insertRule\"]($2, $3)"
         js_insertRuleDeprecated ::
         CSSStyleSheet -> JSString -> Word -> IO Word
 
@@ -49,7 +49,7 @@
   = liftIO
       (void (js_insertRuleDeprecated self (toJSString rule) index))
  
-foreign import javascript unsafe "$1[\"insertRule\"]($2)"
+foreign import javascript safe "$1[\"insertRule\"]($2)"
         js_insertRule :: CSSStyleSheet -> JSString -> IO Word
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
@@ -64,14 +64,14 @@
 insertRule_ self rule
   = liftIO (void (js_insertRule self (toJSString rule)))
  
-foreign import javascript unsafe "$1[\"deleteRule\"]($2)"
+foreign import javascript safe "$1[\"deleteRule\"]($2)"
         js_deleteRule :: CSSStyleSheet -> Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.deleteRule Mozilla CSSStyleSheet.deleteRule documentation> 
 deleteRule :: (MonadIO m) => CSSStyleSheet -> Word -> m ()
 deleteRule self index = liftIO (js_deleteRule self index)
  
-foreign import javascript unsafe "$1[\"addRule\"]($2, $3, $4)"
+foreign import javascript safe "$1[\"addRule\"]($2, $3, $4)"
         js_addRule ::
         CSSStyleSheet ->
           Optional JSString -> Optional JSString -> Optional Word -> IO Int
@@ -99,7 +99,7 @@
             (toOptionalJSString style)
             (maybeToOptional index)))
  
-foreign import javascript unsafe "$1[\"removeRule\"]($2)"
+foreign import javascript safe "$1[\"removeRule\"]($2)"
         js_removeRule :: CSSStyleSheet -> Optional Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.removeRule Mozilla CSSStyleSheet.removeRule documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSSupportsRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSSupportsRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSSupportsRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSSupportsRule.hs
@@ -24,10 +24,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"insertRule\"]($2, $3)"
+foreign import javascript safe "$1[\"insertRule\"]($2, $3)"
         js_insertRule :: CSSSupportsRule -> JSString -> Word -> IO Word
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.insertRule Mozilla CSSSupportsRule.insertRule documentation> 
@@ -44,7 +44,7 @@
 insertRule_ self rule index
   = liftIO (void (js_insertRule self (toJSString rule) index))
  
-foreign import javascript unsafe "$1[\"deleteRule\"]($2)"
+foreign import javascript safe "$1[\"deleteRule\"]($2)"
         js_deleteRule :: CSSSupportsRule -> Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.deleteRule Mozilla CSSSupportsRule.deleteRule documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSValue.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSValue.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSValue.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSValue.hs
@@ -26,14 +26,14 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern CSS_INHERIT = 0
 pattern CSS_PRIMITIVE_VALUE = 1
 pattern CSS_VALUE_LIST = 2
 pattern CSS_CUSTOM = 3
  
-foreign import javascript unsafe "$1[\"cssText\"] = $2;"
+foreign import javascript safe "$1[\"cssText\"] = $2;"
         js_setCssText :: CSSValue -> Optional JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSValueList.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSValueList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CSSValueList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSValueList.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasCaptureMediaStreamTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasCaptureMediaStreamTrack.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CanvasCaptureMediaStreamTrack.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasCaptureMediaStreamTrack.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"requestFrame\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasGradient.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasGradient.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CanvasGradient.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasGradient.hs
@@ -23,10 +23,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"addColorStop\"]($2, $3)"
+foreign import javascript safe "$1[\"addColorStop\"]($2, $3)"
         js_addColorStop :: CanvasGradient -> Float -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasGradient.addColorStop Mozilla CanvasGradient.addColorStop documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasPath.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasPath.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CanvasPath.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasPath.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"closePath\"]()" js_closePath
@@ -78,8 +78,8 @@
   = liftIO
       (js_bezierCurveTo (toCanvasPath self) cp1x cp1y cp2x cp2y x y)
  
-foreign import javascript unsafe
-        "$1[\"arcTo\"]($2, $3, $4, $5, $6)" js_arcTo ::
+foreign import javascript safe "$1[\"arcTo\"]($2, $3, $4, $5, $6)"
+        js_arcTo ::
         CanvasPath ->
           Double -> Double -> Double -> Double -> Double -> IO ()
 
@@ -100,7 +100,7 @@
        self -> Double -> Double -> Double -> Double -> m ()
 rect self x y w h = liftIO (js_rect (toCanvasPath self) x y w h)
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"arc\"]($2, $3, $4, $5, $6,\n$7)" js_arc ::
         CanvasPath ->
           Double -> Double -> Double -> Double -> Double -> Bool -> IO ()
@@ -115,7 +115,7 @@
       (js_arc (toCanvasPath self) x y radius startAngle endAngle
          anticlockwise)
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"ellipse\"]($2, $3, $4, $5,\n$6, $7, $8, $9)" js_ellipse ::
         CanvasPath ->
           Double ->
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasRenderingContext2D.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasRenderingContext2D.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CanvasRenderingContext2D.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasRenderingContext2D.hs
@@ -94,7 +94,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"save\"]()" js_save ::
@@ -600,7 +600,7 @@
 strokeRect self x y width height
   = liftIO (js_strokeRect self x y width height)
  
-foreign import javascript unsafe "$1[\"drawImage\"]($2, $3, $4)"
+foreign import javascript safe "$1[\"drawImage\"]($2, $3, $4)"
         js_drawImage ::
         CanvasRenderingContext2D ->
           CanvasImageSource -> Float -> Float -> IO ()
@@ -612,7 +612,7 @@
 drawImage self image x y
   = liftIO (js_drawImage self (toCanvasImageSource image) x y)
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"drawImage\"]($2, $3, $4, $5,\n$6)" js_drawImageScaled ::
         CanvasRenderingContext2D ->
           CanvasImageSource -> Float -> Float -> Float -> Float -> IO ()
@@ -627,7 +627,7 @@
       (js_drawImageScaled self (toCanvasImageSource image) x y width
          height)
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"drawImage\"]($2, $3, $4, $5,\n$6, $7, $8, $9, $10)"
         js_drawImagePart ::
         CanvasRenderingContext2D ->
@@ -811,7 +811,7 @@
          dirtyWidth
          dirtyHeight)
  
-foreign import javascript unsafe "$1[\"createImageData\"]($2)"
+foreign import javascript safe "$1[\"createImageData\"]($2)"
         js_createImageData ::
         CanvasRenderingContext2D -> Optional ImageData -> IO ImageData
 
@@ -829,7 +829,7 @@
   = liftIO
       (void (js_createImageData self (maybeToOptional imagedata)))
  
-foreign import javascript unsafe "$1[\"createImageData\"]($2, $3)"
+foreign import javascript safe "$1[\"createImageData\"]($2, $3)"
         js_createImageDataSize ::
         CanvasRenderingContext2D -> Float -> Float -> IO ImageData
 
@@ -846,7 +846,7 @@
 createImageDataSize_ self sw sh
   = liftIO (void (js_createImageDataSize self sw sh))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"createLinearGradient\"]($2,\n$3, $4, $5)"
         js_createLinearGradient ::
         CanvasRenderingContext2D ->
@@ -868,7 +868,7 @@
 createLinearGradient_ self x0 y0 x1 y1
   = liftIO (void (js_createLinearGradient self x0 y0 x1 y1))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"createRadialGradient\"]($2,\n$3, $4, $5, $6, $7)"
         js_createRadialGradient ::
         CanvasRenderingContext2D ->
@@ -892,7 +892,7 @@
 createRadialGradient_ self x0 y0 r0 x1 y1 r1
   = liftIO (void (js_createRadialGradient self x0 y0 r0 x1 y1 r1))
  
-foreign import javascript unsafe "$1[\"createPattern\"]($2, $3)"
+foreign import javascript safe "$1[\"createPattern\"]($2, $3)"
         js_createPattern ::
         CanvasRenderingContext2D ->
           CanvasImageSource -> JSString -> IO (Nullable CanvasPattern)
@@ -940,7 +940,7 @@
          (js_createPattern self (toCanvasImageSource image)
             (toJSString repetition)))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"getImageData\"]($2, $3, $4,\n$5)" js_getImageData ::
         CanvasRenderingContext2D ->
           Float -> Float -> Float -> Float -> IO ImageData
@@ -961,7 +961,7 @@
 getImageData_ self sx sy sw sh
   = liftIO (void (js_getImageData self sx sy sw sh))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"webkitGetImageDataHD\"]($2,\n$3, $4, $5)"
         js_webkitGetImageDataHD ::
         CanvasRenderingContext2D ->
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CharacterData.hs b/src/GHCJS/DOM/JSFFI/Generated/CharacterData.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CharacterData.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CharacterData.hs
@@ -26,10 +26,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"substringData\"]($2, $3)"
+foreign import javascript safe "$1[\"substringData\"]($2, $3)"
         js_substringData :: CharacterData -> Word -> Word -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.substringData Mozilla CharacterData.substringData documentation> 
@@ -58,7 +58,7 @@
 appendData self data'
   = liftIO (js_appendData (toCharacterData self) (toJSString data'))
  
-foreign import javascript unsafe "$1[\"insertData\"]($2, $3)"
+foreign import javascript safe "$1[\"insertData\"]($2, $3)"
         js_insertData :: CharacterData -> Word -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.insertData Mozilla CharacterData.insertData documentation> 
@@ -69,7 +69,7 @@
   = liftIO
       (js_insertData (toCharacterData self) offset (toJSString data'))
  
-foreign import javascript unsafe "$1[\"deleteData\"]($2, $3)"
+foreign import javascript safe "$1[\"deleteData\"]($2, $3)"
         js_deleteData :: CharacterData -> Word -> Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.deleteData Mozilla CharacterData.deleteData documentation> 
@@ -78,7 +78,7 @@
 deleteData self offset count
   = liftIO (js_deleteData (toCharacterData self) offset count)
  
-foreign import javascript unsafe "$1[\"replaceData\"]($2, $3, $4)"
+foreign import javascript safe "$1[\"replaceData\"]($2, $3, $4)"
         js_replaceData ::
         CharacterData -> Word -> Word -> JSString -> IO ()
 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ChildNode.hs b/src/GHCJS/DOM/JSFFI/Generated/ChildNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ChildNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ChildNode.hs
@@ -24,10 +24,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"before\"]($2)" js_before ::
+foreign import javascript safe "$1[\"before\"]($2)" js_before ::
         ChildNode -> JSVal -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.before Mozilla ChildNode.before documentation> 
@@ -38,7 +38,7 @@
   = liftIO
       (toJSVal nodes >>= \ nodes' -> js_before (toChildNode self) nodes')
  
-foreign import javascript unsafe "$1[\"after\"]($2)" js_after ::
+foreign import javascript safe "$1[\"after\"]($2)" js_after ::
         ChildNode -> JSVal -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.after Mozilla ChildNode.after documentation> 
@@ -49,7 +49,7 @@
   = liftIO
       (toJSVal nodes >>= \ nodes' -> js_after (toChildNode self) nodes')
  
-foreign import javascript unsafe "$1[\"replaceWith\"]($2)"
+foreign import javascript safe "$1[\"replaceWith\"]($2)"
         js_replaceWith :: ChildNode -> JSVal -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.replaceWith Mozilla ChildNode.replaceWith documentation> 
@@ -61,7 +61,7 @@
       (toJSVal nodes >>=
          \ nodes' -> js_replaceWith (toChildNode self) nodes')
  
-foreign import javascript unsafe "$1[\"remove\"]()" js_remove ::
+foreign import javascript safe "$1[\"remove\"]()" js_remove ::
         ChildNode -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.remove Mozilla ChildNode.remove documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ClipboardEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ClipboardEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ClipboardEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ClipboardEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CloseEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/CloseEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CloseEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CloseEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CommandLineAPIHost.hs b/src/GHCJS/DOM/JSFFI/Generated/CommandLineAPIHost.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CommandLineAPIHost.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CommandLineAPIHost.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"clearConsoleMessages\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Comment.hs b/src/GHCJS/DOM/JSFFI/Generated/Comment.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Comment.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Comment.hs
@@ -21,7 +21,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"Comment\"]($1)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CompositionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/CompositionEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CompositionEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CompositionEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ConvolverNode.hs b/src/GHCJS/DOM/JSFFI/Generated/ConvolverNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ConvolverNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ConvolverNode.hs
@@ -24,11 +24,11 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"buffer\"] = $2;"
-        js_setBuffer :: ConvolverNode -> Optional AudioBuffer -> IO ()
+foreign import javascript safe "$1[\"buffer\"] = $2;" js_setBuffer
+        :: ConvolverNode -> Optional AudioBuffer -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
 setBuffer ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Coordinates.hs b/src/GHCJS/DOM/JSFFI/Generated/Coordinates.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Coordinates.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Coordinates.hs
@@ -29,7 +29,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"latitude\"]" js_getLatitude
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CountQueuingStrategy.hs b/src/GHCJS/DOM/JSFFI/Generated/CountQueuingStrategy.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CountQueuingStrategy.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CountQueuingStrategy.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Counter.hs b/src/GHCJS/DOM/JSFFI/Generated/Counter.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Counter.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Counter.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"identifier\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Crypto.hs b/src/GHCJS/DOM/JSFFI/Generated/Crypto.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Crypto.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Crypto.hs
@@ -24,10 +24,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"getRandomValues\"]($2)"
+foreign import javascript safe "$1[\"getRandomValues\"]($2)"
         js_getRandomValues ::
         Crypto -> ArrayBufferView -> IO ArrayBufferView
 
@@ -51,7 +51,7 @@
 getSubtle :: (MonadIO m) => Crypto -> m SubtleCrypto
 getSubtle self = liftIO (js_getSubtle self)
  
-foreign import javascript unsafe "$1[\"webkitSubtle\"]"
+foreign import javascript safe "$1[\"webkitSubtle\"]"
         js_getWebkitSubtle :: Crypto -> IO WebKitSubtleCrypto
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.webkitSubtle Mozilla Crypto.webkitSubtle documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CryptoKey.hs b/src/GHCJS/DOM/JSFFI/Generated/CryptoKey.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CryptoKey.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CryptoKey.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"type\"]" js_getType ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CustomElementRegistry.hs b/src/GHCJS/DOM/JSFFI/Generated/CustomElementRegistry.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CustomElementRegistry.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CustomElementRegistry.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"define\"]($2, $3)" js_define
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CustomEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/CustomEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/CustomEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/CustomEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMError.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMError.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMError.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMError.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"name\"]" js_getName ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMException.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMException.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMException.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMException.hs
@@ -36,7 +36,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMImplementation.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMImplementation.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMImplementation.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMImplementation.hs
@@ -26,10 +26,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"createDocumentType\"]($2, $3,\n$4)" js_createDocumentType ::
         DOMImplementation ->
           JSString -> JSString -> JSString -> IO DocumentType
@@ -58,8 +58,8 @@
             (toJSString publicId)
             (toJSString systemId)))
  
-foreign import javascript unsafe
-        "$1[\"createDocument\"]($2, $3, $4)" js_createDocument ::
+foreign import javascript safe "$1[\"createDocument\"]($2, $3, $4)"
+        js_createDocument ::
         DOMImplementation ->
           Optional JSString ->
             JSString -> Optional DocumentType -> IO XMLDocument
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMNamedFlowCollection.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMNamedFlowCollection.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMNamedFlowCollection.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMNamedFlowCollection.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMParser.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMParser.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMParser.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMParser.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"DOMParser\"]()"
@@ -33,7 +33,7 @@
 newDOMParser :: (MonadIO m) => m DOMParser
 newDOMParser = liftIO (js_newDOMParser)
  
-foreign import javascript unsafe "$1[\"parseFromString\"]($2, $3)"
+foreign import javascript safe "$1[\"parseFromString\"]($2, $3)"
         js_parseFromString ::
         DOMParser -> JSString -> JSString -> IO Document
 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMPoint.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMPoint.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMPoint.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMPoint.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"DOMPoint\"]($1)"
@@ -52,19 +52,18 @@
          (maybeToOptional z)
          (maybeToOptional w))
  
-foreign import javascript unsafe "$1[\"fromPoint\"]($2)"
-        js_fromPoint :: DOMPoint -> Optional DOMPointInit -> IO DOMPoint
+foreign import javascript unsafe
+        "window[\"DOMPoint\"][\"fromPoint\"]($1)" js_fromPoint ::
+        Optional DOMPointInit -> IO DOMPoint
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.fromPoint Mozilla DOMPoint.fromPoint documentation> 
-fromPoint ::
-          (MonadIO m) => DOMPoint -> Maybe DOMPointInit -> m DOMPoint
-fromPoint self other
-  = liftIO (js_fromPoint self (maybeToOptional other))
+fromPoint :: (MonadIO m) => Maybe DOMPointInit -> m DOMPoint
+fromPoint other = liftIO (js_fromPoint (maybeToOptional other))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.fromPoint Mozilla DOMPoint.fromPoint documentation> 
-fromPoint_ :: (MonadIO m) => DOMPoint -> Maybe DOMPointInit -> m ()
-fromPoint_ self other
-  = liftIO (void (js_fromPoint self (maybeToOptional other)))
+fromPoint_ :: (MonadIO m) => Maybe DOMPointInit -> m ()
+fromPoint_ other
+  = liftIO (void (js_fromPoint (maybeToOptional other)))
  
 foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
         DOMPoint -> Double -> IO ()
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMPointReadOnly.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMPointReadOnly.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMPointReadOnly.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMPointReadOnly.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
@@ -56,26 +56,19 @@
          (maybeToOptional z)
          (maybeToOptional w))
  
-foreign import javascript unsafe "$1[\"fromPoint\"]($2)"
-        js_fromPoint ::
-        DOMPointReadOnly -> Optional DOMPointInit -> IO DOMPointReadOnly
+foreign import javascript unsafe
+        "window[\"DOMPointReadOnly\"][\"fromPoint\"]($1)" js_fromPoint ::
+        Optional DOMPointInit -> IO DOMPointReadOnly
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.fromPoint Mozilla DOMPointReadOnly.fromPoint documentation> 
 fromPoint ::
-          (MonadIO m, IsDOMPointReadOnly self) =>
-            self -> Maybe DOMPointInit -> m DOMPointReadOnly
-fromPoint self other
-  = liftIO
-      (js_fromPoint (toDOMPointReadOnly self) (maybeToOptional other))
+          (MonadIO m) => Maybe DOMPointInit -> m DOMPointReadOnly
+fromPoint other = liftIO (js_fromPoint (maybeToOptional other))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.fromPoint Mozilla DOMPointReadOnly.fromPoint documentation> 
-fromPoint_ ::
-           (MonadIO m, IsDOMPointReadOnly self) =>
-             self -> Maybe DOMPointInit -> m ()
-fromPoint_ self other
-  = liftIO
-      (void
-         (js_fromPoint (toDOMPointReadOnly self) (maybeToOptional other)))
+fromPoint_ :: (MonadIO m) => Maybe DOMPointInit -> m ()
+fromPoint_ other
+  = liftIO (void (js_fromPoint (maybeToOptional other)))
  
 foreign import javascript unsafe "$1[\"x\"]" js_getX ::
         DOMPointReadOnly -> IO Double
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMRect.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMRect.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMRect.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMRect.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
@@ -44,19 +44,18 @@
          (maybeToOptional width)
          (maybeToOptional height))
  
-foreign import javascript unsafe "$1[\"fromRect\"]($2)" js_fromRect
-        :: DOMRect -> Optional DOMRectInit -> IO DOMRect
+foreign import javascript unsafe
+        "window[\"DOMRect\"][\"fromRect\"]($1)" js_fromRect ::
+        Optional DOMRectInit -> IO DOMRect
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.fromRect Mozilla DOMRect.fromRect documentation> 
-fromRect ::
-         (MonadIO m) => DOMRect -> Maybe DOMRectInit -> m DOMRect
-fromRect self other
-  = liftIO (js_fromRect self (maybeToOptional other))
+fromRect :: (MonadIO m) => Maybe DOMRectInit -> m DOMRect
+fromRect other = liftIO (js_fromRect (maybeToOptional other))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.fromRect Mozilla DOMRect.fromRect documentation> 
-fromRect_ :: (MonadIO m) => DOMRect -> Maybe DOMRectInit -> m ()
-fromRect_ self other
-  = liftIO (void (js_fromRect self (maybeToOptional other)))
+fromRect_ :: (MonadIO m) => Maybe DOMRectInit -> m ()
+fromRect_ other
+  = liftIO (void (js_fromRect (maybeToOptional other)))
  
 foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
         DOMRect -> Double -> IO ()
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMRectReadOnly.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMRectReadOnly.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMRectReadOnly.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMRectReadOnly.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
@@ -47,25 +47,18 @@
          (maybeToOptional width)
          (maybeToOptional height))
  
-foreign import javascript unsafe "$1[\"fromRect\"]($2)" js_fromRect
-        :: DOMRectReadOnly -> Optional DOMRectInit -> IO DOMRectReadOnly
+foreign import javascript unsafe
+        "window[\"DOMRectReadOnly\"][\"fromRect\"]($1)" js_fromRect ::
+        Optional DOMRectInit -> IO DOMRectReadOnly
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.fromRect Mozilla DOMRectReadOnly.fromRect documentation> 
-fromRect ::
-         (MonadIO m, IsDOMRectReadOnly self) =>
-           self -> Maybe DOMRectInit -> m DOMRectReadOnly
-fromRect self other
-  = liftIO
-      (js_fromRect (toDOMRectReadOnly self) (maybeToOptional other))
+fromRect :: (MonadIO m) => Maybe DOMRectInit -> m DOMRectReadOnly
+fromRect other = liftIO (js_fromRect (maybeToOptional other))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.fromRect Mozilla DOMRectReadOnly.fromRect documentation> 
-fromRect_ ::
-          (MonadIO m, IsDOMRectReadOnly self) =>
-            self -> Maybe DOMRectInit -> m ()
-fromRect_ self other
-  = liftIO
-      (void
-         (js_fromRect (toDOMRectReadOnly self) (maybeToOptional other)))
+fromRect_ :: (MonadIO m) => Maybe DOMRectInit -> m ()
+fromRect_ other
+  = liftIO (void (js_fromRect (maybeToOptional other)))
  
 foreign import javascript unsafe "$1[\"x\"]" js_getX ::
         DOMRectReadOnly -> IO Double
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMStringList.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMStringList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMStringList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMStringList.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMStringMap.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMStringMap.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMStringMap.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMStringMap.hs
@@ -21,7 +21,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_get ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMTokenList.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMTokenList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DOMTokenList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMTokenList.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
@@ -73,7 +73,7 @@
 contains_ self token
   = liftIO (void (js_contains self (toJSString token)))
  
-foreign import javascript unsafe "$1[\"add\"]($2)" js_add ::
+foreign import javascript safe "$1[\"add\"]($2)" js_add ::
         DOMTokenList -> JSVal -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.add Mozilla DOMTokenList.add documentation> 
@@ -82,7 +82,7 @@
 add self tokens
   = liftIO (toJSVal tokens >>= \ tokens' -> js_add self tokens')
  
-foreign import javascript unsafe "$1[\"remove\"]($2)" js_remove ::
+foreign import javascript safe "$1[\"remove\"]($2)" js_remove ::
         DOMTokenList -> JSVal -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.remove Mozilla DOMTokenList.remove documentation> 
@@ -91,7 +91,7 @@
 remove self tokens
   = liftIO (toJSVal tokens >>= \ tokens' -> js_remove self tokens')
  
-foreign import javascript unsafe "($1[\"toggle\"]($2, $3) ? 1 : 0)"
+foreign import javascript safe "($1[\"toggle\"]($2, $3) ? 1 : 0)"
         js_toggle :: DOMTokenList -> JSString -> Bool -> IO Bool
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.toggle Mozilla DOMTokenList.toggle documentation> 
@@ -108,8 +108,8 @@
 toggle_ self token force
   = liftIO (void (js_toggle self (toJSString token) force))
  
-foreign import javascript unsafe "$1[\"replace\"]($2, $3)"
-        js_replace :: DOMTokenList -> JSString -> JSString -> IO ()
+foreign import javascript safe "$1[\"replace\"]($2, $3)" js_replace
+        :: DOMTokenList -> JSString -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.replace Mozilla DOMTokenList.replace documentation> 
 replace ::
@@ -118,7 +118,7 @@
 replace self token newToken
   = liftIO (js_replace self (toJSString token) (toJSString newToken))
  
-foreign import javascript unsafe "($1[\"supports\"]($2) ? 1 : 0)"
+foreign import javascript safe "($1[\"supports\"]($2) ? 1 : 0)"
         js_supports :: DOMTokenList -> JSString -> IO Bool
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.supports Mozilla DOMTokenList.supports documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DataCue.hs b/src/GHCJS/DOM/JSFFI/Generated/DataCue.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DataCue.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DataCue.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DataTransfer.hs b/src/GHCJS/DOM/JSFFI/Generated/DataTransfer.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DataTransfer.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DataTransfer.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"setDragImage\"]($2, $3, $4)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DataTransferItem.hs b/src/GHCJS/DOM/JSFFI/Generated/DataTransferItem.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DataTransferItem.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DataTransferItem.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"getAsString\"]($2)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DataTransferItemList.hs b/src/GHCJS/DOM/JSFFI/Generated/DataTransferItemList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DataTransferItemList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DataTransferItemList.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
@@ -54,7 +54,7 @@
         (MonadIO m) => DataTransferItemList -> Maybe File -> m ()
 addFile self file = liftIO (js_addFile self (maybeToOptional file))
  
-foreign import javascript unsafe "$1[\"add\"]($2, $3)" js_add ::
+foreign import javascript safe "$1[\"add\"]($2, $3)" js_add ::
         DataTransferItemList ->
           Optional JSString -> Optional JSString -> IO ()
 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Database.hs b/src/GHCJS/DOM/JSFFI/Generated/Database.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Database.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Database.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DatabaseCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/DatabaseCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DatabaseCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DatabaseCallback.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DatabaseCallback Mozilla DatabaseCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DedicatedWorkerGlobalScope.hs b/src/GHCJS/DOM/JSFFI/Generated/DedicatedWorkerGlobalScope.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DedicatedWorkerGlobalScope.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DedicatedWorkerGlobalScope.hs
@@ -23,10 +23,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"postMessage\"]($2, $3)"
+foreign import javascript safe "$1[\"postMessage\"]($2, $3)"
         js_postMessage ::
         DedicatedWorkerGlobalScope -> JSVal -> JSVal -> IO ()
 
@@ -43,4 +43,4 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope.onmessage Mozilla DedicatedWorkerGlobalScope.onmessage documentation> 
 message :: EventName DedicatedWorkerGlobalScope MessageEvent
-message = unsafeEventName (toJSString "message")
+message = unsafeEventNameAsync (toJSString "message")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DelayNode.hs b/src/GHCJS/DOM/JSFFI/Generated/DelayNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DelayNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DelayNode.hs
@@ -22,7 +22,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"delayTime\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEvent.hs
@@ -31,7 +31,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DeviceOrientationEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/DeviceOrientationEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DeviceOrientationEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DeviceOrientationEvent.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DeviceProximityEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/DeviceProximityEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DeviceProximityEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DeviceProximityEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Document.hs b/src/GHCJS/DOM/JSFFI/Generated/Document.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Document.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Document.hs
@@ -112,7 +112,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"getAnimations\"]()"
@@ -210,7 +210,7 @@
          (js_getElementsByClassName (toDocument self)
             (toJSString classNames)))
  
-foreign import javascript unsafe "$1[\"createElement\"]($2)"
+foreign import javascript safe "$1[\"createElement\"]($2)"
         js_createElement :: Document -> JSString -> IO Element
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElement Mozilla Document.createElement documentation> 
@@ -229,7 +229,7 @@
   = liftIO
       (void (js_createElement (toDocument self) (toJSString localName)))
  
-foreign import javascript unsafe "$1[\"createElementNS\"]($2, $3)"
+foreign import javascript safe "$1[\"createElementNS\"]($2, $3)"
         js_createElementNS ::
         Document -> Optional JSString -> JSString -> IO Element
 
@@ -289,7 +289,7 @@
   = liftIO
       (void (js_createTextNode (toDocument self) (toJSString data')))
  
-foreign import javascript unsafe "$1[\"createCDATASection\"]($2)"
+foreign import javascript safe "$1[\"createCDATASection\"]($2)"
         js_createCDATASection :: Document -> JSString -> IO CDATASection
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createCDATASection Mozilla Document.createCDATASection documentation> 
@@ -326,7 +326,7 @@
   = liftIO
       (void (js_createComment (toDocument self) (toJSString data')))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"createProcessingInstruction\"]($2,\n$3)"
         js_createProcessingInstruction ::
         Document -> JSString -> JSString -> IO ProcessingInstruction
@@ -354,7 +354,7 @@
             (toJSString target)
             (toJSString data')))
  
-foreign import javascript unsafe "$1[\"importNode\"]($2, $3)"
+foreign import javascript safe "$1[\"importNode\"]($2, $3)"
         js_importNode :: Document -> Node -> Bool -> IO Node
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.importNode Mozilla Document.importNode documentation> 
@@ -372,8 +372,8 @@
   = liftIO
       (void (js_importNode (toDocument self) (toNode node) deep))
  
-foreign import javascript unsafe "$1[\"adoptNode\"]($2)"
-        js_adoptNode :: Document -> Node -> IO Node
+foreign import javascript safe "$1[\"adoptNode\"]($2)" js_adoptNode
+        :: Document -> Node -> IO Node
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.adoptNode Mozilla Document.adoptNode documentation> 
 adoptNode ::
@@ -387,7 +387,7 @@
 adoptNode_ self node
   = liftIO (void (js_adoptNode (toDocument self) (toNode node)))
  
-foreign import javascript unsafe "$1[\"createAttribute\"]($2)"
+foreign import javascript safe "$1[\"createAttribute\"]($2)"
         js_createAttribute :: Document -> JSString -> IO Attr
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttribute Mozilla Document.createAttribute documentation> 
@@ -407,8 +407,8 @@
       (void
          (js_createAttribute (toDocument self) (toJSString localName)))
  
-foreign import javascript unsafe
-        "$1[\"createAttributeNS\"]($2, $3)" js_createAttributeNS ::
+foreign import javascript safe "$1[\"createAttributeNS\"]($2, $3)"
+        js_createAttributeNS ::
         Document -> Optional JSString -> JSString -> IO Attr
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttributeNS Mozilla Document.createAttributeNS documentation> 
@@ -434,7 +434,7 @@
             (toOptionalJSString namespaceURI)
             (toJSString qualifiedName)))
  
-foreign import javascript unsafe "$1[\"createEvent\"]($2)"
+foreign import javascript safe "$1[\"createEvent\"]($2)"
         js_createEvent :: Document -> JSString -> IO Event
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createEvent Mozilla Document.createEvent documentation> 
@@ -709,7 +709,7 @@
       (fromJust . nullableToMaybe <$>
          (js_getSelection (toDocument self)))
  
-foreign import javascript unsafe "$1[\"createExpression\"]($2, $3)"
+foreign import javascript safe "$1[\"createExpression\"]($2, $3)"
         js_createExpression ::
         Document ->
           Optional JSString -> Optional XPathNSResolver -> IO XPathExpression
@@ -759,7 +759,7 @@
          (js_createNSResolver (toDocument self)
             (maybeToOptional (fmap toNode nodeResolver))))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"evaluate\"]($2, $3, $4, $5,\n$6)" js_evaluate ::
         Document ->
           Optional JSString ->
@@ -1186,8 +1186,8 @@
   = liftIO
       (fromJust . nullableToMaybe <$> (js_getLocation (toDocument self)))
  
-foreign import javascript unsafe "$1[\"domain\"] = $2;"
-        js_setDomain :: Document -> JSString -> IO ()
+foreign import javascript safe "$1[\"domain\"] = $2;" js_setDomain
+        :: Document -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.domain Mozilla Document.domain documentation> 
 setDomain ::
@@ -1215,8 +1215,8 @@
 getReferrer self
   = liftIO (fromJSString <$> (js_getReferrer (toDocument self)))
  
-foreign import javascript unsafe "$1[\"cookie\"] = $2;"
-        js_setCookie :: Document -> JSString -> IO ()
+foreign import javascript safe "$1[\"cookie\"] = $2;" js_setCookie
+        :: Document -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.cookie Mozilla Document.cookie documentation> 
 setCookie ::
@@ -1224,7 +1224,7 @@
 setCookie self val
   = liftIO (js_setCookie (toDocument self) (toJSString val))
  
-foreign import javascript unsafe "$1[\"cookie\"]" js_getCookie ::
+foreign import javascript safe "$1[\"cookie\"]" js_getCookie ::
         Document -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.cookie Mozilla Document.cookie documentation> 
@@ -1292,7 +1292,7 @@
 getDir self
   = liftIO (fromJSString <$> (js_getDir (toDocument self)))
  
-foreign import javascript unsafe "$1[\"body\"] = $2;" js_setBody ::
+foreign import javascript safe "$1[\"body\"] = $2;" js_setBody ::
         Document -> Optional HTMLElement -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.body Mozilla Document.body documentation> 
@@ -1476,7 +1476,8 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onreadystatechange Mozilla Document.onreadystatechange documentation> 
 readyStateChange ::
                  (IsDocument self, IsEventTarget self) => EventName self Event
-readyStateChange = unsafeEventName (toJSString "readystatechange")
+readyStateChange
+  = unsafeEventNameAsync (toJSString "readystatechange")
  
 foreign import javascript unsafe "$1[\"styleSheets\"]"
         js_getStyleSheets :: Document -> IO StyleSheetList
@@ -1753,7 +1754,7 @@
       (fromJust . fromMaybeJSString <$>
          (js_getXmlEncoding (toDocument self)))
  
-foreign import javascript unsafe "$1[\"xmlVersion\"] = $2;"
+foreign import javascript safe "$1[\"xmlVersion\"] = $2;"
         js_setXmlVersion :: Document -> Optional JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentAndElementEventHandlers.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentAndElementEventHandlers.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DocumentAndElementEventHandlers.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentAndElementEventHandlers.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentAndElementEventHandlers.oncopy Mozilla DocumentAndElementEventHandlers.oncopy documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentFragment.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentFragment.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DocumentFragment.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentFragment.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentOrShadowRoot.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentOrShadowRoot.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DocumentOrShadowRoot.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentOrShadowRoot.hs
@@ -29,7 +29,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"elementFromPoint\"]($2, $3)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentTimeline.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentTimeline.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DocumentTimeline.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentTimeline.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentType.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentType.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DocumentType.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentType.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"name\"]" js_getName ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DynamicsCompressorNode.hs b/src/GHCJS/DOM/JSFFI/Generated/DynamicsCompressorNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/DynamicsCompressorNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/DynamicsCompressorNode.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"threshold\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXTBlendMinMax.hs b/src/GHCJS/DOM/JSFFI/Generated/EXTBlendMinMax.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/EXTBlendMinMax.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXTBlendMinMax.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern MIN_EXT = 32775
 pattern MAX_EXT = 32776
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXTTextureFilterAnisotropic.hs b/src/GHCJS/DOM/JSFFI/Generated/EXTTextureFilterAnisotropic.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/EXTTextureFilterAnisotropic.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXTTextureFilterAnisotropic.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern TEXTURE_MAX_ANISOTROPY_EXT = 34046
 pattern MAX_TEXTURE_MAX_ANISOTROPY_EXT = 34047
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXTsRGB.hs b/src/GHCJS/DOM/JSFFI/Generated/EXTsRGB.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/EXTsRGB.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXTsRGB.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern SRGB_EXT = 35904
 pattern SRGB_ALPHA_EXT = 35906
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Element.hs b/src/GHCJS/DOM/JSFFI/Generated/Element.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Element.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Element.hs
@@ -85,7 +85,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
@@ -213,7 +213,7 @@
             (toOptionalJSString namespaceURI)
             (toJSString localName)))
  
-foreign import javascript unsafe "$1[\"setAttribute\"]($2, $3)"
+foreign import javascript safe "$1[\"setAttribute\"]($2, $3)"
         js_setAttribute :: Element -> JSString -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttribute Mozilla Element.setAttribute documentation> 
@@ -226,8 +226,8 @@
       (js_setAttribute (toElement self) (toJSString qualifiedName)
          (toJSString value))
  
-foreign import javascript unsafe
-        "$1[\"setAttributeNS\"]($2, $3, $4)" js_setAttributeNS ::
+foreign import javascript safe "$1[\"setAttributeNS\"]($2, $3, $4)"
+        js_setAttributeNS ::
         Element -> Optional JSString -> JSString -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNS Mozilla Element.setAttributeNS documentation> 
@@ -410,7 +410,7 @@
             (toOptionalJSString namespaceURI)
             (toJSString localName)))
  
-foreign import javascript unsafe "$1[\"setAttributeNode\"]($2)"
+foreign import javascript safe "$1[\"setAttributeNode\"]($2)"
         js_setAttributeNode :: Element -> Attr -> IO (Nullable Attr)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNode Mozilla Element.setAttributeNode documentation> 
@@ -442,7 +442,7 @@
       (fromJust . nullableToMaybe <$>
          (js_setAttributeNode (toElement self) attr))
  
-foreign import javascript unsafe "$1[\"setAttributeNodeNS\"]($2)"
+foreign import javascript safe "$1[\"setAttributeNodeNS\"]($2)"
         js_setAttributeNodeNS :: Element -> Attr -> IO (Nullable Attr)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNodeNS Mozilla Element.setAttributeNodeNS documentation> 
@@ -475,7 +475,7 @@
       (fromJust . nullableToMaybe <$>
          (js_setAttributeNodeNS (toElement self) attr))
  
-foreign import javascript unsafe "$1[\"removeAttributeNode\"]($2)"
+foreign import javascript safe "$1[\"removeAttributeNode\"]($2)"
         js_removeAttributeNode :: Element -> Attr -> IO Attr
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttributeNode Mozilla Element.removeAttributeNode documentation> 
@@ -490,7 +490,7 @@
 removeAttributeNode_ self attr
   = liftIO (void (js_removeAttributeNode (toElement self) attr))
  
-foreign import javascript unsafe "$1[\"attachShadow\"]($2)"
+foreign import javascript safe "$1[\"attachShadow\"]($2)"
         js_attachShadow :: Element -> ShadowRootInit -> IO ShadowRoot
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.attachShadow Mozilla Element.attachShadow documentation> 
@@ -506,8 +506,8 @@
 attachShadow_ self init
   = liftIO (void (js_attachShadow (toElement self) init))
  
-foreign import javascript unsafe "$1[\"closest\"]($2)" js_closest
-        :: Element -> JSString -> IO (Nullable Element)
+foreign import javascript safe "$1[\"closest\"]($2)" js_closest ::
+        Element -> JSString -> IO (Nullable Element)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.closest Mozilla Element.closest documentation> 
 closest ::
@@ -545,7 +545,7 @@
       (fromJust . nullableToMaybe <$>
          (js_closest (toElement self) (toJSString selectors)))
  
-foreign import javascript unsafe "($1[\"matches\"]($2) ? 1 : 0)"
+foreign import javascript safe "($1[\"matches\"]($2) ? 1 : 0)"
         js_matches :: Element -> JSString -> IO Bool
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.matches Mozilla Element.matches documentation> 
@@ -563,7 +563,7 @@
   = liftIO
       (void (js_matches (toElement self) (toJSString selectors)))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "($1[\"webkitMatchesSelector\"]($2) ? 1 : 0)"
         js_webkitMatchesSelector :: Element -> JSString -> IO Bool
 
@@ -654,7 +654,7 @@
       (void
          (js_getElementsByClassName (toElement self) (toJSString name)))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"insertAdjacentElement\"]($2,\n$3)" js_insertAdjacentElement
         :: Element -> JSString -> Element -> IO (Nullable Element)
 
@@ -703,9 +703,8 @@
          (js_insertAdjacentElement (toElement self) (toJSString where')
             (toElement element)))
  
-foreign import javascript unsafe
-        "$1[\"insertAdjacentText\"]($2, $3)" js_insertAdjacentText ::
-        Element -> JSString -> JSString -> IO ()
+foreign import javascript safe "$1[\"insertAdjacentText\"]($2, $3)"
+        js_insertAdjacentText :: Element -> JSString -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentText Mozilla Element.insertAdjacentText documentation> 
 insertAdjacentText ::
@@ -810,9 +809,8 @@
          (MonadIO m, IsElement self) => self -> Double -> Double -> m ()
 scrollBy self x y = liftIO (js_scrollBy (toElement self) x y)
  
-foreign import javascript unsafe
-        "$1[\"insertAdjacentHTML\"]($2, $3)" js_insertAdjacentHTML ::
-        Element -> JSString -> JSString -> IO ()
+foreign import javascript safe "$1[\"insertAdjacentHTML\"]($2, $3)"
+        js_insertAdjacentHTML :: Element -> JSString -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentHTML Mozilla Element.insertAdjacentHTML documentation> 
 insertAdjacentHTML ::
@@ -1126,7 +1124,7 @@
 getClientHeight :: (MonadIO m, IsElement self) => self -> m Double
 getClientHeight self = liftIO (js_getClientHeight (toElement self))
  
-foreign import javascript unsafe "$1[\"innerHTML\"] = $2;"
+foreign import javascript safe "$1[\"innerHTML\"] = $2;"
         js_setInnerHTML :: Element -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML Mozilla Element.innerHTML documentation> 
@@ -1145,7 +1143,7 @@
 getInnerHTML self
   = liftIO (fromJSString <$> (js_getInnerHTML (toElement self)))
  
-foreign import javascript unsafe "$1[\"outerHTML\"] = $2;"
+foreign import javascript safe "$1[\"outerHTML\"] = $2;"
         js_setOuterHTML :: Element -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.outerHTML Mozilla Element.outerHTML documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ElementCSSInlineStyle.hs b/src/GHCJS/DOM/JSFFI/Generated/ElementCSSInlineStyle.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ElementCSSInlineStyle.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ElementCSSInlineStyle.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"style\"]" js_getStyle ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ErrorEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ErrorEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ErrorEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ErrorEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EventListener.hs b/src/GHCJS/DOM/JSFFI/Generated/EventListener.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/EventListener.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/EventListener.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"handleEvent\"]($2)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EventSource.hs b/src/GHCJS/DOM/JSFFI/Generated/EventSource.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/EventSource.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/EventSource.hs
@@ -26,10 +26,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe
+foreign import javascript safe
         "new window[\"EventSource\"]($1,\n$2)" js_newEventSource ::
         JSString -> Optional EventSourceInit -> IO EventSource
 
@@ -77,12 +77,12 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.onopen Mozilla EventSource.onopen documentation> 
 open :: EventName EventSource Event
-open = unsafeEventName (toJSString "open")
+open = unsafeEventNameAsync (toJSString "open")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.onmessage Mozilla EventSource.onmessage documentation> 
 message :: EventName EventSource MessageEvent
-message = unsafeEventName (toJSString "message")
+message = unsafeEventNameAsync (toJSString "message")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.onerror Mozilla EventSource.onerror documentation> 
 error :: EventName EventSource UIEvent
-error = unsafeEventName (toJSString "error")
+error = unsafeEventNameAsync (toJSString "error")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EventTarget.hs b/src/GHCJS/DOM/JSFFI/Generated/EventTarget.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/EventTarget.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/EventTarget.hs
@@ -66,7 +66,7 @@
              (maybeToOptional callback)
              (EventListenerOptionsOrBool options'))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "($1[\"dispatchEvent\"]($2) ? 1 : 0)" js_dispatchEvent ::
         EventTarget -> Event -> IO Bool
 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/File.hs b/src/GHCJS/DOM/JSFFI/Generated/File.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/File.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/File.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"File\"]($1, $2, $3)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileError.hs b/src/GHCJS/DOM/JSFFI/Generated/FileError.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/FileError.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileError.hs
@@ -28,7 +28,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern NOT_FOUND_ERR = 1
 pattern SECURITY_ERR = 2
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileException.hs b/src/GHCJS/DOM/JSFFI/Generated/FileException.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/FileException.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileException.hs
@@ -29,7 +29,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"toString\"]()" js_toString
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileList.hs b/src/GHCJS/DOM/JSFFI/Generated/FileList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/FileList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileList.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileReader.hs b/src/GHCJS/DOM/JSFFI/Generated/FileReader.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/FileReader.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileReader.hs
@@ -29,7 +29,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"FileReader\"]()"
@@ -39,7 +39,7 @@
 newFileReader :: (MonadIO m) => m FileReader
 newFileReader = liftIO (js_newFileReader)
  
-foreign import javascript unsafe "$1[\"readAsArrayBuffer\"]($2)"
+foreign import javascript safe "$1[\"readAsArrayBuffer\"]($2)"
         js_readAsArrayBuffer :: FileReader -> Optional Blob -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsArrayBuffer Mozilla FileReader.readAsArrayBuffer documentation> 
@@ -49,7 +49,7 @@
   = liftIO
       (js_readAsArrayBuffer self (maybeToOptional (fmap toBlob blob)))
  
-foreign import javascript unsafe "$1[\"readAsBinaryString\"]($2)"
+foreign import javascript safe "$1[\"readAsBinaryString\"]($2)"
         js_readAsBinaryString :: FileReader -> Optional Blob -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsBinaryString Mozilla FileReader.readAsBinaryString documentation> 
@@ -59,7 +59,7 @@
   = liftIO
       (js_readAsBinaryString self (maybeToOptional (fmap toBlob blob)))
  
-foreign import javascript unsafe "$1[\"readAsText\"]($2, $3)"
+foreign import javascript safe "$1[\"readAsText\"]($2, $3)"
         js_readAsText ::
         FileReader -> Optional Blob -> Optional JSString -> IO ()
 
@@ -72,7 +72,7 @@
       (js_readAsText self (maybeToOptional (fmap toBlob blob))
          (toOptionalJSString encoding))
  
-foreign import javascript unsafe "$1[\"readAsDataURL\"]($2)"
+foreign import javascript safe "$1[\"readAsDataURL\"]($2)"
         js_readAsDataURL :: FileReader -> Optional Blob -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsDataURL Mozilla FileReader.readAsDataURL documentation> 
@@ -130,24 +130,24 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onloadstart Mozilla FileReader.onloadstart documentation> 
 loadStart :: EventName FileReader ProgressEvent
-loadStart = unsafeEventName (toJSString "loadstart")
+loadStart = unsafeEventNameAsync (toJSString "loadstart")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onprogress Mozilla FileReader.onprogress documentation> 
 progress :: EventName FileReader ProgressEvent
-progress = unsafeEventName (toJSString "progress")
+progress = unsafeEventNameAsync (toJSString "progress")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onload Mozilla FileReader.onload documentation> 
 load :: EventName FileReader UIEvent
-load = unsafeEventName (toJSString "load")
+load = unsafeEventNameAsync (toJSString "load")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onabort Mozilla FileReader.onabort documentation> 
 abortEvent :: EventName FileReader UIEvent
-abortEvent = unsafeEventName (toJSString "abort")
+abortEvent = unsafeEventNameAsync (toJSString "abort")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onerror Mozilla FileReader.onerror documentation> 
 error :: EventName FileReader UIEvent
-error = unsafeEventName (toJSString "error")
+error = unsafeEventNameAsync (toJSString "error")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onloadend Mozilla FileReader.onloadend documentation> 
 loadEnd :: EventName FileReader ProgressEvent
-loadEnd = unsafeEventName (toJSString "loadend")
+loadEnd = unsafeEventNameAsync (toJSString "loadend")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileReaderSync.hs b/src/GHCJS/DOM/JSFFI/Generated/FileReaderSync.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/FileReaderSync.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileReaderSync.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"FileReaderSync\"]()"
@@ -36,7 +36,7 @@
 newFileReaderSync :: (MonadIO m) => m FileReaderSync
 newFileReaderSync = liftIO (js_newFileReaderSync)
  
-foreign import javascript unsafe "$1[\"readAsArrayBuffer\"]($2)"
+foreign import javascript safe "$1[\"readAsArrayBuffer\"]($2)"
         js_readAsArrayBuffer :: FileReaderSync -> Blob -> IO ArrayBuffer
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsArrayBuffer Mozilla FileReaderSync.readAsArrayBuffer documentation> 
@@ -51,7 +51,7 @@
 readAsArrayBuffer_ self blob
   = liftIO (void (js_readAsArrayBuffer self (toBlob blob)))
  
-foreign import javascript unsafe "$1[\"readAsBinaryString\"]($2)"
+foreign import javascript safe "$1[\"readAsBinaryString\"]($2)"
         js_readAsBinaryString :: FileReaderSync -> Blob -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsBinaryString Mozilla FileReaderSync.readAsBinaryString documentation> 
@@ -68,7 +68,7 @@
 readAsBinaryString_ self blob
   = liftIO (void (js_readAsBinaryString self (toBlob blob)))
  
-foreign import javascript unsafe "$1[\"readAsText\"]($2, $3)"
+foreign import javascript safe "$1[\"readAsText\"]($2, $3)"
         js_readAsText ::
         FileReaderSync -> Blob -> Optional JSString -> IO JSString
 
@@ -91,7 +91,7 @@
       (void
          (js_readAsText self (toBlob blob) (toOptionalJSString encoding)))
  
-foreign import javascript unsafe "$1[\"readAsDataURL\"]($2)"
+foreign import javascript safe "$1[\"readAsDataURL\"]($2)"
         js_readAsDataURL :: FileReaderSync -> Blob -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsDataURL Mozilla FileReaderSync.readAsDataURL documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FocusEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/FocusEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/FocusEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/FocusEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FontFace.hs b/src/GHCJS/DOM/JSFFI/Generated/FontFace.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/FontFace.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/FontFace.hs
@@ -30,10 +30,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe
+foreign import javascript safe
         "new window[\"FontFace\"]($1, $2,\n$3)" js_newFontFace ::
         JSString ->
           StringOrBinaryData -> Optional FontFaceDescriptors -> IO FontFace
@@ -61,8 +61,8 @@
 load_ :: (MonadIO m) => FontFace -> m ()
 load_ self = liftIO (void (js_load self))
  
-foreign import javascript unsafe "$1[\"family\"] = $2;"
-        js_setFamily :: FontFace -> JSString -> IO ()
+foreign import javascript safe "$1[\"family\"] = $2;" js_setFamily
+        :: FontFace -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.family Mozilla FontFace.family documentation> 
 setFamily :: (MonadIO m, ToJSString val) => FontFace -> val -> m ()
@@ -76,8 +76,8 @@
           (MonadIO m, FromJSString result) => FontFace -> m result
 getFamily self = liftIO (fromJSString <$> (js_getFamily self))
  
-foreign import javascript unsafe "$1[\"style\"] = $2;" js_setStyle
-        :: FontFace -> JSString -> IO ()
+foreign import javascript safe "$1[\"style\"] = $2;" js_setStyle ::
+        FontFace -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.style Mozilla FontFace.style documentation> 
 setStyle :: (MonadIO m, ToJSString val) => FontFace -> val -> m ()
@@ -91,8 +91,8 @@
          (MonadIO m, FromJSString result) => FontFace -> m result
 getStyle self = liftIO (fromJSString <$> (js_getStyle self))
  
-foreign import javascript unsafe "$1[\"weight\"] = $2;"
-        js_setWeight :: FontFace -> JSString -> IO ()
+foreign import javascript safe "$1[\"weight\"] = $2;" js_setWeight
+        :: FontFace -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.weight Mozilla FontFace.weight documentation> 
 setWeight :: (MonadIO m, ToJSString val) => FontFace -> val -> m ()
@@ -106,7 +106,7 @@
           (MonadIO m, FromJSString result) => FontFace -> m result
 getWeight self = liftIO (fromJSString <$> (js_getWeight self))
  
-foreign import javascript unsafe "$1[\"stretch\"] = $2;"
+foreign import javascript safe "$1[\"stretch\"] = $2;"
         js_setStretch :: FontFace -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.stretch Mozilla FontFace.stretch documentation> 
@@ -122,7 +122,7 @@
            (MonadIO m, FromJSString result) => FontFace -> m result
 getStretch self = liftIO (fromJSString <$> (js_getStretch self))
  
-foreign import javascript unsafe "$1[\"unicodeRange\"] = $2;"
+foreign import javascript safe "$1[\"unicodeRange\"] = $2;"
         js_setUnicodeRange :: FontFace -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.unicodeRange Mozilla FontFace.unicodeRange documentation> 
@@ -140,7 +140,7 @@
 getUnicodeRange self
   = liftIO (fromJSString <$> (js_getUnicodeRange self))
  
-foreign import javascript unsafe "$1[\"variant\"] = $2;"
+foreign import javascript safe "$1[\"variant\"] = $2;"
         js_setVariant :: FontFace -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.variant Mozilla FontFace.variant documentation> 
@@ -156,7 +156,7 @@
            (MonadIO m, FromJSString result) => FontFace -> m result
 getVariant self = liftIO (fromJSString <$> (js_getVariant self))
  
-foreign import javascript unsafe "$1[\"featureSettings\"] = $2;"
+foreign import javascript safe "$1[\"featureSettings\"] = $2;"
         js_setFeatureSettings :: FontFace -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.featureSettings Mozilla FontFace.featureSettings documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FontFaceSet.hs b/src/GHCJS/DOM/JSFFI/Generated/FontFaceSet.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/FontFaceSet.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/FontFaceSet.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"FontFaceSet\"]($1)"
@@ -102,7 +102,7 @@
   = liftIO
       (void (js_load self (toJSString font) (toOptionalJSString text)))
  
-foreign import javascript unsafe "($1[\"check\"]($2, $3) ? 1 : 0)"
+foreign import javascript safe "($1[\"check\"]($2, $3) ? 1 : 0)"
         js_check :: FontFaceSet -> JSString -> Optional JSString -> IO Bool
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.check Mozilla FontFaceSet.check documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FormData.hs b/src/GHCJS/DOM/JSFFI/Generated/FormData.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/FormData.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/FormData.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"FormData\"]($1)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GainNode.hs b/src/GHCJS/DOM/JSFFI/Generated/GainNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/GainNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/GainNode.hs
@@ -21,7 +21,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"gain\"]" js_getGain ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Gamepad.hs b/src/GHCJS/DOM/JSFFI/Generated/Gamepad.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Gamepad.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Gamepad.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"id\"]" js_getId ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GamepadButton.hs b/src/GHCJS/DOM/JSFFI/Generated/GamepadButton.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/GamepadButton.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/GamepadButton.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "($1[\"pressed\"] ? 1 : 0)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GamepadEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/GamepadEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/GamepadEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/GamepadEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Geolocation.hs b/src/GHCJS/DOM/JSFFI/Generated/Geolocation.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Geolocation.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Geolocation.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Geoposition.hs b/src/GHCJS/DOM/JSFFI/Generated/Geoposition.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Geoposition.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Geoposition.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"coords\"]" js_getCoords ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GlobalCrypto.hs b/src/GHCJS/DOM/JSFFI/Generated/GlobalCrypto.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/GlobalCrypto.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/GlobalCrypto.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"crypto\"]" js_getCrypto ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GlobalEventHandlers.hs b/src/GHCJS/DOM/JSFFI/Generated/GlobalEventHandlers.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/GlobalEventHandlers.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/GlobalEventHandlers.hs
@@ -39,14 +39,14 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onabort Mozilla GlobalEventHandlers.onabort documentation> 
 abort ::
       (IsGlobalEventHandlers self, IsEventTarget self) =>
         EventName self UIEvent
-abort = unsafeEventName (toJSString "abort")
+abort = unsafeEventNameAsync (toJSString "abort")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onautocomplete Mozilla GlobalEventHandlers.onautocomplete documentation> 
 autocomplete ::
@@ -65,7 +65,7 @@
 blur ::
      (IsGlobalEventHandlers self, IsEventTarget self) =>
        EventName self FocusEvent
-blur = unsafeEventName (toJSString "blur")
+blur = unsafeEventNameAsync (toJSString "blur")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.oncanplay Mozilla GlobalEventHandlers.oncanplay documentation> 
 canPlay ::
@@ -173,13 +173,13 @@
 error ::
       (IsGlobalEventHandlers self, IsEventTarget self) =>
         EventName self UIEvent
-error = unsafeEventName (toJSString "error")
+error = unsafeEventNameAsync (toJSString "error")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onfocus Mozilla GlobalEventHandlers.onfocus documentation> 
 focus ::
       (IsGlobalEventHandlers self, IsEventTarget self) =>
         EventName self FocusEvent
-focus = unsafeEventName (toJSString "focus")
+focus = unsafeEventNameAsync (toJSString "focus")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.oninput Mozilla GlobalEventHandlers.oninput documentation> 
 input ::
@@ -215,7 +215,7 @@
 load ::
      (IsGlobalEventHandlers self, IsEventTarget self) =>
        EventName self UIEvent
-load = unsafeEventName (toJSString "load")
+load = unsafeEventNameAsync (toJSString "load")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onloadeddata Mozilla GlobalEventHandlers.onloadeddata documentation> 
 loadedData ::
@@ -233,7 +233,7 @@
 loadStart ::
           (IsGlobalEventHandlers self, IsEventTarget self) =>
             EventName self ProgressEvent
-loadStart = unsafeEventName (toJSString "loadstart")
+loadStart = unsafeEventNameAsync (toJSString "loadstart")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onmousedown Mozilla GlobalEventHandlers.onmousedown documentation> 
 mouseDown ::
@@ -305,7 +305,7 @@
 progress ::
          (IsGlobalEventHandlers self, IsEventTarget self) =>
            EventName self ProgressEvent
-progress = unsafeEventName (toJSString "progress")
+progress = unsafeEventNameAsync (toJSString "progress")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onratechange Mozilla GlobalEventHandlers.onratechange documentation> 
 rateChange ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GlobalPerformance.hs b/src/GHCJS/DOM/JSFFI/Generated/GlobalPerformance.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/GlobalPerformance.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/GlobalPerformance.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"performance\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLAllCollection.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLAllCollection.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLAllCollection.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLAllCollection.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLAnchorElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLAnchorElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLAnchorElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLAnchorElement.hs
@@ -32,7 +32,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"charset\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLAppletElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLAppletElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLAppletElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLAppletElement.hs
@@ -31,7 +31,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLAreaElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLAreaElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLAreaElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLAreaElement.hs
@@ -29,7 +29,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"alt\"] = $2;" js_setAlt ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLAttachmentElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLAttachmentElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLAttachmentElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLAttachmentElement.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"file\"] = $2;" js_setFile ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLBRElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLBRElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLBRElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLBRElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"clear\"] = $2;" js_setClear
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLBaseElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLBaseElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLBaseElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLBaseElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"href\"] = $2;" js_setHref ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLBodyElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLBodyElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLBodyElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLBodyElement.hs
@@ -31,7 +31,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"aLink\"] = $2;" js_setALink
@@ -134,15 +134,15 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onblur Mozilla HTMLBodyElement.onblur documentation> 
 blur :: EventName HTMLBodyElement FocusEvent
-blur = unsafeEventName (toJSString "blur")
+blur = unsafeEventNameAsync (toJSString "blur")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onerror Mozilla HTMLBodyElement.onerror documentation> 
 error :: EventName HTMLBodyElement UIEvent
-error = unsafeEventName (toJSString "error")
+error = unsafeEventNameAsync (toJSString "error")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onfocus Mozilla HTMLBodyElement.onfocus documentation> 
 focus :: EventName HTMLBodyElement FocusEvent
-focus = unsafeEventName (toJSString "focus")
+focus = unsafeEventNameAsync (toJSString "focus")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onfocusin Mozilla HTMLBodyElement.onfocusin documentation> 
 focusin :: EventName HTMLBodyElement onfocusin
@@ -154,7 +154,7 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onload Mozilla HTMLBodyElement.onload documentation> 
 load :: EventName HTMLBodyElement UIEvent
-load = unsafeEventName (toJSString "load")
+load = unsafeEventNameAsync (toJSString "load")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onresize Mozilla HTMLBodyElement.onresize documentation> 
 resize :: EventName HTMLBodyElement UIEvent
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLButtonElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLButtonElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLButtonElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLButtonElement.hs
@@ -37,7 +37,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLCanvasElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLCanvasElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLCanvasElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLCanvasElement.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"getContext\"]($2, $3)"
@@ -82,9 +82,8 @@
             \ arguments' ->
               js_getContext self (toJSString contextId) arguments'))
  
-foreign import javascript unsafe "$1[\"toDataURL\"]($2)"
-        js_toDataURL ::
-        HTMLCanvasElement -> Optional JSString -> IO JSString
+foreign import javascript safe "$1[\"toDataURL\"]($2)" js_toDataURL
+        :: HTMLCanvasElement -> Optional JSString -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.toDataURL Mozilla HTMLCanvasElement.toDataURL documentation> 
 toDataURL ::
@@ -101,7 +100,7 @@
 toDataURL_ self type'
   = liftIO (void (js_toDataURL self (toOptionalJSString type')))
  
-foreign import javascript unsafe "$1[\"toBlob\"]($2, $3, $4)"
+foreign import javascript safe "$1[\"toBlob\"]($2, $3, $4)"
         js_toBlob' ::
         HTMLCanvasElement ->
           BlobCallback -> Optional JSString -> Optional JSVal -> IO ()
@@ -118,7 +117,7 @@
            js_toBlob' self callback (toOptionalJSString type')
              (maybeToOptional quality'))
  
-foreign import javascript unsafe "$1[\"captureStream\"]($2)"
+foreign import javascript safe "$1[\"captureStream\"]($2)"
         js_captureStream ::
         HTMLCanvasElement -> Optional Double -> IO MediaStream
 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLCollection.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLCollection.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLCollection.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLCollection.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDListElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDListElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLDListElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDListElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"compact\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDataElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDataElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLDataElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDataElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDataListElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDataListElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLDataListElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDataListElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"options\"]" js_getOptions ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDetailsElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDetailsElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLDetailsElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDetailsElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"open\"] = $2;" js_setOpen ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDirectoryElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDirectoryElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLDirectoryElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDirectoryElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"compact\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDivElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDivElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLDivElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDivElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDocument.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDocument.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLDocument.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDocument.hs
@@ -30,7 +30,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"open\"]()" js_open ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLElement.hs
@@ -43,7 +43,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"HTMLElement\"]()"
@@ -241,7 +241,7 @@
 getSpellcheck :: (MonadIO m, IsHTMLElement self) => self -> m Bool
 getSpellcheck self = liftIO (js_getSpellcheck (toHTMLElement self))
  
-foreign import javascript unsafe "$1[\"innerText\"] = $2;"
+foreign import javascript safe "$1[\"innerText\"] = $2;"
         js_setInnerText :: HTMLElement -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.innerText Mozilla HTMLElement.innerText documentation> 
@@ -261,7 +261,7 @@
 getInnerText self
   = liftIO (fromJSString <$> (js_getInnerText (toHTMLElement self)))
  
-foreign import javascript unsafe "$1[\"contentEditable\"] = $2;"
+foreign import javascript safe "$1[\"contentEditable\"] = $2;"
         js_setContentEditable :: HTMLElement -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.contentEditable Mozilla HTMLElement.contentEditable documentation> 
@@ -352,7 +352,7 @@
 getOffsetHeight self
   = liftIO (js_getOffsetHeight (toHTMLElement self))
  
-foreign import javascript unsafe "$1[\"outerText\"] = $2;"
+foreign import javascript safe "$1[\"outerText\"] = $2;"
         js_setOuterText :: HTMLElement -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.outerText Mozilla HTMLElement.outerText documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLEmbedElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLEmbedElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLEmbedElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLEmbedElement.hs
@@ -27,10 +27,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"getSVGDocument\"]()"
+foreign import javascript safe "$1[\"getSVGDocument\"]()"
         js_getSVGDocument :: HTMLEmbedElement -> IO Document
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.getSVGDocument Mozilla HTMLEmbedElement.getSVGDocument documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLFieldSetElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLFieldSetElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLFieldSetElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLFieldSetElement.hs
@@ -30,7 +30,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLFontElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLFontElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLFontElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLFontElement.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"color\"] = $2;" js_setColor
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLFormControlsCollection.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLFormControlsCollection.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLFormControlsCollection.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLFormControlsCollection.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_get ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLFormElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLFormElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLFormElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLFormElement.hs
@@ -36,7 +36,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_getAt ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameElement.hs
@@ -35,10 +35,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"getSVGDocument\"]()"
+foreign import javascript safe "$1[\"getSVGDocument\"]()"
         js_getSVGDocument :: HTMLFrameElement -> IO Document
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.getSVGDocument Mozilla HTMLFrameElement.getSVGDocument documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameSetElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameSetElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameSetElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameSetElement.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"cols\"] = $2;" js_setCols ::
@@ -63,15 +63,15 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onblur Mozilla HTMLFrameSetElement.onblur documentation> 
 blur :: EventName HTMLFrameSetElement FocusEvent
-blur = unsafeEventName (toJSString "blur")
+blur = unsafeEventNameAsync (toJSString "blur")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onerror Mozilla HTMLFrameSetElement.onerror documentation> 
 error :: EventName HTMLFrameSetElement UIEvent
-error = unsafeEventName (toJSString "error")
+error = unsafeEventNameAsync (toJSString "error")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onfocus Mozilla HTMLFrameSetElement.onfocus documentation> 
 focus :: EventName HTMLFrameSetElement FocusEvent
-focus = unsafeEventName (toJSString "focus")
+focus = unsafeEventNameAsync (toJSString "focus")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onfocusin Mozilla HTMLFrameSetElement.onfocusin documentation> 
 focusin :: EventName HTMLFrameSetElement onfocusin
@@ -83,7 +83,7 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onload Mozilla HTMLFrameSetElement.onload documentation> 
 load :: EventName HTMLFrameSetElement UIEvent
-load = unsafeEventName (toJSString "load")
+load = unsafeEventNameAsync (toJSString "load")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onresize Mozilla HTMLFrameSetElement.onresize documentation> 
 resize :: EventName HTMLFrameSetElement UIEvent
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLHRElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLHRElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLHRElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLHRElement.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"profile\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadingElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadingElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadingElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadingElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLHtmlElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLHtmlElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLHtmlElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLHtmlElement.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"version\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLHyperlinkElementUtils.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLHyperlinkElementUtils.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLHyperlinkElementUtils.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLHyperlinkElementUtils.hs
@@ -32,7 +32,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"href\"] = $2;" js_setHref ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLIFrameElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLIFrameElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLIFrameElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLIFrameElement.hs
@@ -36,10 +36,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"getSVGDocument\"]()"
+foreign import javascript safe "$1[\"getSVGDocument\"]()"
         js_getSVGDocument :: HTMLIFrameElement -> IO Document
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.getSVGDocument Mozilla HTMLIFrameElement.getSVGDocument documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLImageElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLImageElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLImageElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLImageElement.hs
@@ -38,7 +38,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLInputElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLInputElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLInputElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLInputElement.hs
@@ -73,17 +73,17 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"stepUp\"]($2)" js_stepUp ::
+foreign import javascript safe "$1[\"stepUp\"]($2)" js_stepUp ::
         HTMLInputElement -> Optional Int -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.stepUp Mozilla HTMLInputElement.stepUp documentation> 
 stepUp :: (MonadIO m) => HTMLInputElement -> Maybe Int -> m ()
 stepUp self n = liftIO (js_stepUp self (maybeToOptional n))
  
-foreign import javascript unsafe "$1[\"stepDown\"]($2)" js_stepDown
+foreign import javascript safe "$1[\"stepDown\"]($2)" js_stepDown
         :: HTMLInputElement -> Optional Int -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.stepDown Mozilla HTMLInputElement.stepDown documentation> 
@@ -130,7 +130,7 @@
 select :: (MonadIO m) => HTMLInputElement -> m ()
 select self = liftIO (js_select self)
  
-foreign import javascript unsafe "$1[\"setRangeText\"]($2)"
+foreign import javascript safe "$1[\"setRangeText\"]($2)"
         js_setRangeText :: HTMLInputElement -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.setRangeText Mozilla HTMLInputElement.setRangeText documentation> 
@@ -140,7 +140,7 @@
 setRangeText self replacement
   = liftIO (js_setRangeText self (toJSString replacement))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"setRangeText\"]($2, $3, $4,\n$5)" js_setRangeText4 ::
         HTMLInputElement ->
           JSString -> Word -> Word -> Optional JSString -> IO ()
@@ -155,7 +155,7 @@
       (js_setRangeText4 self (toJSString replacement) start end
          (toOptionalJSString selectionMode))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"setSelectionRange\"]($2, $3,\n$4)" js_setSelectionRange ::
         HTMLInputElement -> Int -> Int -> Optional JSString -> IO ()
 
@@ -464,7 +464,7 @@
        (MonadIO m, FromJSString result) => HTMLInputElement -> m result
 getMax self = liftIO (fromJSString <$> (js_getMax self))
  
-foreign import javascript unsafe "$1[\"minLength\"] = $2;"
+foreign import javascript safe "$1[\"minLength\"] = $2;"
         js_setMinLength :: HTMLInputElement -> Int -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.minLength Mozilla HTMLInputElement.minLength documentation> 
@@ -478,7 +478,7 @@
 getMinLength :: (MonadIO m) => HTMLInputElement -> m Int
 getMinLength self = liftIO (js_getMinLength self)
  
-foreign import javascript unsafe "$1[\"maxLength\"] = $2;"
+foreign import javascript safe "$1[\"maxLength\"] = $2;"
         js_setMaxLength :: HTMLInputElement -> Int -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.maxLength Mozilla HTMLInputElement.maxLength documentation> 
@@ -600,7 +600,7 @@
 getRequired :: (MonadIO m) => HTMLInputElement -> m Bool
 getRequired self = liftIO (js_getRequired self)
  
-foreign import javascript unsafe "$1[\"size\"] = $2;" js_setSize ::
+foreign import javascript safe "$1[\"size\"] = $2;" js_setSize ::
         HTMLInputElement -> Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.size Mozilla HTMLInputElement.size documentation> 
@@ -680,8 +680,8 @@
 getDefaultValue self
   = liftIO (fromJSString <$> (js_getDefaultValue self))
  
-foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
-        :: HTMLInputElement -> JSString -> IO ()
+foreign import javascript safe "$1[\"value\"] = $2;" js_setValue ::
+        HTMLInputElement -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.value Mozilla HTMLInputElement.value documentation> 
 setValue ::
@@ -696,7 +696,7 @@
          (MonadIO m, FromJSString result) => HTMLInputElement -> m result
 getValue self = liftIO (fromJSString <$> (js_getValue self))
  
-foreign import javascript unsafe "$1[\"valueAsDate\"] = $2;"
+foreign import javascript safe "$1[\"valueAsDate\"] = $2;"
         js_setValueAsDate :: HTMLInputElement -> Optional Date -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsDate Mozilla HTMLInputElement.valueAsDate documentation> 
@@ -728,7 +728,7 @@
 getValueAsDateUnchecked self
   = liftIO (fromJust . nullableToMaybe <$> (js_getValueAsDate self))
  
-foreign import javascript unsafe "$1[\"valueAsNumber\"] = $2;"
+foreign import javascript safe "$1[\"valueAsNumber\"] = $2;"
         js_setValueAsNumber :: HTMLInputElement -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsNumber Mozilla HTMLInputElement.valueAsNumber documentation> 
@@ -787,35 +787,35 @@
 getLabels :: (MonadIO m) => HTMLInputElement -> m NodeList
 getLabels self = liftIO (js_getLabels self)
  
-foreign import javascript unsafe "$1[\"selectionStart\"] = $2;"
+foreign import javascript safe "$1[\"selectionStart\"] = $2;"
         js_setSelectionStart :: HTMLInputElement -> Int -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionStart Mozilla HTMLInputElement.selectionStart documentation> 
 setSelectionStart :: (MonadIO m) => HTMLInputElement -> Int -> m ()
 setSelectionStart self val = liftIO (js_setSelectionStart self val)
  
-foreign import javascript unsafe "$1[\"selectionStart\"]"
+foreign import javascript safe "$1[\"selectionStart\"]"
         js_getSelectionStart :: HTMLInputElement -> IO Int
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionStart Mozilla HTMLInputElement.selectionStart documentation> 
 getSelectionStart :: (MonadIO m) => HTMLInputElement -> m Int
 getSelectionStart self = liftIO (js_getSelectionStart self)
  
-foreign import javascript unsafe "$1[\"selectionEnd\"] = $2;"
+foreign import javascript safe "$1[\"selectionEnd\"] = $2;"
         js_setSelectionEnd :: HTMLInputElement -> Int -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionEnd Mozilla HTMLInputElement.selectionEnd documentation> 
 setSelectionEnd :: (MonadIO m) => HTMLInputElement -> Int -> m ()
 setSelectionEnd self val = liftIO (js_setSelectionEnd self val)
  
-foreign import javascript unsafe "$1[\"selectionEnd\"]"
+foreign import javascript safe "$1[\"selectionEnd\"]"
         js_getSelectionEnd :: HTMLInputElement -> IO Int
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionEnd Mozilla HTMLInputElement.selectionEnd documentation> 
 getSelectionEnd :: (MonadIO m) => HTMLInputElement -> m Int
 getSelectionEnd self = liftIO (js_getSelectionEnd self)
  
-foreign import javascript unsafe "$1[\"selectionDirection\"] = $2;"
+foreign import javascript safe "$1[\"selectionDirection\"] = $2;"
         js_setSelectionDirection :: HTMLInputElement -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionDirection Mozilla HTMLInputElement.selectionDirection documentation> 
@@ -824,7 +824,7 @@
 setSelectionDirection self val
   = liftIO (js_setSelectionDirection self (toJSString val))
  
-foreign import javascript unsafe "$1[\"selectionDirection\"]"
+foreign import javascript safe "$1[\"selectionDirection\"]"
         js_getSelectionDirection :: HTMLInputElement -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionDirection Mozilla HTMLInputElement.selectionDirection documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLKeygenElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLKeygenElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLKeygenElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLKeygenElement.hs
@@ -32,7 +32,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLLIElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLLIElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLLIElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLLIElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLLabelElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLLabelElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLLabelElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLLabelElement.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"form\"]" js_getForm ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLLegendElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLLegendElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLLegendElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLLegendElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"form\"]" js_getForm ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLLinkElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLLinkElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLLinkElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLLinkElement.hs
@@ -35,7 +35,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"disabled\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLMapElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLMapElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLMapElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLMapElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"areas\"]" js_getAreas ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLMarqueeElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLMarqueeElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLMarqueeElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLMarqueeElement.hs
@@ -33,7 +33,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"start\"]()" js_start ::
@@ -131,7 +131,7 @@
 getHspace :: (MonadIO m) => HTMLMarqueeElement -> m Word
 getHspace self = liftIO (js_getHspace self)
  
-foreign import javascript unsafe "$1[\"loop\"] = $2;" js_setLoop ::
+foreign import javascript safe "$1[\"loop\"] = $2;" js_setLoop ::
         HTMLMarqueeElement -> Int -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.loop Mozilla HTMLMarqueeElement.loop documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLMediaElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLMediaElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLMediaElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLMediaElement.hs
@@ -71,7 +71,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"load\"]()" js_load ::
@@ -172,7 +172,7 @@
           (maybeToOptional mediaKeys))
          >>= maybeThrowPromiseRejected)
  
-foreign import javascript unsafe "$1[\"addTextTrack\"]($2, $3, $4)"
+foreign import javascript safe "$1[\"addTextTrack\"]($2, $3, $4)"
         js_addTextTrack ::
         HTMLMediaElement ->
           JSString -> Optional JSString -> Optional JSString -> IO TextTrack
@@ -418,7 +418,7 @@
            (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
 getSeeking self = liftIO (js_getSeeking (toHTMLMediaElement self))
  
-foreign import javascript unsafe "$1[\"currentTime\"] = $2;"
+foreign import javascript safe "$1[\"currentTime\"] = $2;"
         js_setCurrentTime :: HTMLMediaElement -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.currentTime Mozilla HTMLMediaElement.currentTime documentation> 
@@ -565,8 +565,8 @@
 getControls self
   = liftIO (js_getControls (toHTMLMediaElement self))
  
-foreign import javascript unsafe "$1[\"volume\"] = $2;"
-        js_setVolume :: HTMLMediaElement -> Double -> IO ()
+foreign import javascript safe "$1[\"volume\"] = $2;" js_setVolume
+        :: HTMLMediaElement -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.volume Mozilla HTMLMediaElement.volume documentation> 
 setVolume ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLMenuElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLMenuElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLMenuElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLMenuElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"compact\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLMetaElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLMetaElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLMetaElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLMetaElement.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"content\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLMeterElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLMeterElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLMeterElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLMeterElement.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLModElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLModElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLModElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLModElement.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"cite\"] = $2;" js_setCite ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLOListElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLOListElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLOListElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLOListElement.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"compact\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLObjectElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLObjectElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLObjectElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLObjectElement.hs
@@ -42,7 +42,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
@@ -78,7 +78,7 @@
 setCustomValidity self error
   = liftIO (js_setCustomValidity self (toJSString error))
  
-foreign import javascript unsafe "$1[\"getSVGDocument\"]()"
+foreign import javascript safe "$1[\"getSVGDocument\"]()"
         js_getSVGDocument :: HTMLObjectElement -> IO Document
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.getSVGDocument Mozilla HTMLObjectElement.getSVGDocument documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLOptGroupElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLOptGroupElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLOptGroupElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLOptGroupElement.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"disabled\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionElement.hs
@@ -28,7 +28,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"disabled\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionsCollection.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionsCollection.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionsCollection.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionsCollection.hs
@@ -27,10 +27,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"add\"]($2, $3)" js_addBefore
+foreign import javascript safe "$1[\"add\"]($2, $3)" js_addBefore
         ::
         HTMLOptionsCollection ->
           HTMLOptionElementOrGroup -> Optional HTMLElementOrLong -> IO ()
@@ -120,8 +120,8 @@
       (fromJust . nullableToMaybe <$>
          (js_namedItem self (toJSString name)))
  
-foreign import javascript unsafe "$1[\"length\"] = $2;"
-        js_setLength :: HTMLOptionsCollection -> Word -> IO ()
+foreign import javascript safe "$1[\"length\"] = $2;" js_setLength
+        :: HTMLOptionsCollection -> Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.length Mozilla HTMLOptionsCollection.length documentation> 
 setLength :: (MonadIO m) => HTMLOptionsCollection -> Word -> m ()
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLOutputElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLOutputElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLOutputElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLOutputElement.hs
@@ -31,7 +31,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLParagraphElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLParagraphElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLParagraphElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLParagraphElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLParamElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLParamElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLParamElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLParamElement.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLPreElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLPreElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLPreElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLPreElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLProgressElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLProgressElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLProgressElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLProgressElement.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLQuoteElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLQuoteElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLQuoteElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLQuoteElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"cite\"] = $2;" js_setCite ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLScriptElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLScriptElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLScriptElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLScriptElement.hs
@@ -33,7 +33,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"text\"] = $2;" js_setText ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLSelectElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLSelectElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLSelectElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLSelectElement.hs
@@ -41,7 +41,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
@@ -108,7 +108,7 @@
       (fromJust . nullableToMaybe <$>
          (js_namedItem self (toJSString name)))
  
-foreign import javascript unsafe "$1[\"add\"]($2, $3)" js_addBefore
+foreign import javascript safe "$1[\"add\"]($2, $3)" js_addBefore
         ::
         HTMLSelectElement ->
           HTMLOptionElementOrGroup -> Optional HTMLElementOrLong -> IO ()
@@ -126,8 +126,8 @@
              \ element' -> js_addBefore self (HTMLOptionElementOrGroup element')
              (maybeToOptional (fmap HTMLElementOrLong before')))
  
-foreign import javascript unsafe "$1[\"remove\"]()" js_removeThis
-        :: HTMLSelectElement -> IO ()
+foreign import javascript safe "$1[\"remove\"]()" js_removeThis ::
+        HTMLSelectElement -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.remove Mozilla HTMLSelectElement.remove documentation> 
 removeThis :: (MonadIO m) => HTMLSelectElement -> m ()
@@ -297,8 +297,8 @@
            (MonadIO m) => HTMLSelectElement -> m HTMLOptionsCollection
 getOptions self = liftIO (js_getOptions self)
  
-foreign import javascript unsafe "$1[\"length\"] = $2;"
-        js_setLength :: HTMLSelectElement -> Word -> IO ()
+foreign import javascript safe "$1[\"length\"] = $2;" js_setLength
+        :: HTMLSelectElement -> Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.length Mozilla HTMLSelectElement.length documentation> 
 setLength :: (MonadIO m) => HTMLSelectElement -> Word -> m ()
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLSlotElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLSlotElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLSlotElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLSlotElement.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"assignedNodes\"]($2)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLSourceElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLSourceElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLSourceElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLSourceElement.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"src\"] = $2;" js_setSrc ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLStyleElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLStyleElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLStyleElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLStyleElement.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"disabled\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCaptionElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCaptionElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCaptionElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCaptionElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCellElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCellElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCellElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCellElement.hs
@@ -33,7 +33,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"cellIndex\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableColElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableColElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableColElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableColElement.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableElement.hs
@@ -41,7 +41,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"createTHead\"]()"
@@ -109,8 +109,8 @@
 deleteCaption :: (MonadIO m) => HTMLTableElement -> m ()
 deleteCaption self = liftIO (js_deleteCaption self)
  
-foreign import javascript unsafe "$1[\"insertRow\"]($2)"
-        js_insertRow :: HTMLTableElement -> Optional Int -> IO HTMLElement
+foreign import javascript safe "$1[\"insertRow\"]($2)" js_insertRow
+        :: HTMLTableElement -> Optional Int -> IO HTMLElement
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.insertRow Mozilla HTMLTableElement.insertRow documentation> 
 insertRow ::
@@ -123,14 +123,14 @@
 insertRow_ self index
   = liftIO (void (js_insertRow self (maybeToOptional index)))
  
-foreign import javascript unsafe "$1[\"deleteRow\"]($2)"
-        js_deleteRow :: HTMLTableElement -> Int -> IO ()
+foreign import javascript safe "$1[\"deleteRow\"]($2)" js_deleteRow
+        :: HTMLTableElement -> Int -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.deleteRow Mozilla HTMLTableElement.deleteRow documentation> 
 deleteRow :: (MonadIO m) => HTMLTableElement -> Int -> m ()
 deleteRow self index = liftIO (js_deleteRow self index)
  
-foreign import javascript unsafe "$1[\"caption\"] = $2;"
+foreign import javascript safe "$1[\"caption\"] = $2;"
         js_setCaption ::
         HTMLTableElement -> Optional HTMLTableCaptionElement -> IO ()
 
@@ -165,8 +165,8 @@
 getCaptionUnchecked self
   = liftIO (fromJust . nullableToMaybe <$> (js_getCaption self))
  
-foreign import javascript unsafe "$1[\"tHead\"] = $2;" js_setTHead
-        :: HTMLTableElement -> Optional HTMLTableSectionElement -> IO ()
+foreign import javascript safe "$1[\"tHead\"] = $2;" js_setTHead ::
+        HTMLTableElement -> Optional HTMLTableSectionElement -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tHead Mozilla HTMLTableElement.tHead documentation> 
 setTHead ::
@@ -198,8 +198,8 @@
 getTHeadUnchecked self
   = liftIO (fromJust . nullableToMaybe <$> (js_getTHead self))
  
-foreign import javascript unsafe "$1[\"tFoot\"] = $2;" js_setTFoot
-        :: HTMLTableElement -> Optional HTMLTableSectionElement -> IO ()
+foreign import javascript safe "$1[\"tFoot\"] = $2;" js_setTFoot ::
+        HTMLTableElement -> Optional HTMLTableSectionElement -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tFoot Mozilla HTMLTableElement.tFoot documentation> 
 setTFoot ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableRowElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableRowElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableRowElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableRowElement.hs
@@ -29,10 +29,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"insertCell\"]($2)"
+foreign import javascript safe "$1[\"insertCell\"]($2)"
         js_insertCell ::
         HTMLTableRowElement -> Optional Int -> IO HTMLElement
 
@@ -48,7 +48,7 @@
 insertCell_ self index
   = liftIO (void (js_insertCell self (maybeToOptional index)))
  
-foreign import javascript unsafe "$1[\"deleteCell\"]($2)"
+foreign import javascript safe "$1[\"deleteCell\"]($2)"
         js_deleteCell :: HTMLTableRowElement -> Int -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.deleteCell Mozilla HTMLTableRowElement.deleteCell documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableSectionElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableSectionElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableSectionElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableSectionElement.hs
@@ -26,12 +26,11 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"insertRow\"]($2)"
-        js_insertRow ::
-        HTMLTableSectionElement -> Optional Int -> IO HTMLElement
+foreign import javascript safe "$1[\"insertRow\"]($2)" js_insertRow
+        :: HTMLTableSectionElement -> Optional Int -> IO HTMLElement
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.insertRow Mozilla HTMLTableSectionElement.insertRow documentation> 
 insertRow ::
@@ -46,8 +45,8 @@
 insertRow_ self index
   = liftIO (void (js_insertRow self (maybeToOptional index)))
  
-foreign import javascript unsafe "$1[\"deleteRow\"]($2)"
-        js_deleteRow :: HTMLTableSectionElement -> Int -> IO ()
+foreign import javascript safe "$1[\"deleteRow\"]($2)" js_deleteRow
+        :: HTMLTableSectionElement -> Int -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.deleteRow Mozilla HTMLTableSectionElement.deleteRow documentation> 
 deleteRow :: (MonadIO m) => HTMLTableSectionElement -> Int -> m ()
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTemplateElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTemplateElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTemplateElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTemplateElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"content\"]" js_getContent ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTextAreaElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTextAreaElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTextAreaElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTextAreaElement.hs
@@ -49,7 +49,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
@@ -93,7 +93,7 @@
 select :: (MonadIO m) => HTMLTextAreaElement -> m ()
 select self = liftIO (js_select self)
  
-foreign import javascript unsafe "$1[\"setRangeText\"]($2)"
+foreign import javascript safe "$1[\"setRangeText\"]($2)"
         js_setRangeText :: HTMLTextAreaElement -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setRangeText Mozilla HTMLTextAreaElement.setRangeText documentation> 
@@ -103,7 +103,7 @@
 setRangeText self replacement
   = liftIO (js_setRangeText self (toJSString replacement))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"setRangeText\"]($2, $3, $4,\n$5)" js_setRangeText4 ::
         HTMLTextAreaElement ->
           JSString -> Word -> Word -> Optional JSString -> IO ()
@@ -185,7 +185,7 @@
 getForm :: (MonadIO m) => HTMLTextAreaElement -> m HTMLFormElement
 getForm self = liftIO (js_getForm self)
  
-foreign import javascript unsafe "$1[\"minLength\"] = $2;"
+foreign import javascript safe "$1[\"minLength\"] = $2;"
         js_setMinLength :: HTMLTextAreaElement -> Int -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.minLength Mozilla HTMLTextAreaElement.minLength documentation> 
@@ -199,7 +199,7 @@
 getMinLength :: (MonadIO m) => HTMLTextAreaElement -> m Int
 getMinLength self = liftIO (js_getMinLength self)
  
-foreign import javascript unsafe "$1[\"maxLength\"] = $2;"
+foreign import javascript safe "$1[\"maxLength\"] = $2;"
         js_setMaxLength :: HTMLTextAreaElement -> Int -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.maxLength Mozilla HTMLTextAreaElement.maxLength documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTimeElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTimeElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTimeElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTimeElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"dateTime\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTitleElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTitleElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTitleElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTitleElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"text\"] = $2;" js_setText ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTrackElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTrackElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLTrackElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTrackElement.hs
@@ -28,7 +28,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern NONE = 0
 pattern LOADING = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLUListElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLUListElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLUListElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLUListElement.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"compact\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLVideoElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLVideoElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HTMLVideoElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLVideoElement.hs
@@ -43,10 +43,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"webkitEnterFullscreen\"]()"
+foreign import javascript safe "$1[\"webkitEnterFullscreen\"]()"
         js_webkitEnterFullscreen :: HTMLVideoElement -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitEnterFullscreen Mozilla HTMLVideoElement.webkitEnterFullscreen documentation> 
@@ -60,7 +60,7 @@
 webkitExitFullscreen :: (MonadIO m) => HTMLVideoElement -> m ()
 webkitExitFullscreen self = liftIO (js_webkitExitFullscreen self)
  
-foreign import javascript unsafe "$1[\"webkitEnterFullScreen\"]()"
+foreign import javascript safe "$1[\"webkitEnterFullScreen\"]()"
         js_webkitEnterFullScreen :: HTMLVideoElement -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitEnterFullScreen Mozilla HTMLVideoElement.webkitEnterFullScreen documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HashChangeEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/HashChangeEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/HashChangeEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/HashChangeEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Headers.hs b/src/GHCJS/DOM/JSFFI/Generated/Headers.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Headers.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Headers.hs
@@ -24,10 +24,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"append\"]($2, $3)" js_append
+foreign import javascript safe "$1[\"append\"]($2, $3)" js_append
         :: Headers -> JSString -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.append Mozilla Headers.append documentation> 
@@ -37,14 +37,14 @@
 append self name value
   = liftIO (js_append self (toJSString name) (toJSString value))
  
-foreign import javascript unsafe "$1[\"delete\"]($2)" js_delete ::
+foreign import javascript safe "$1[\"delete\"]($2)" js_delete ::
         Headers -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.delete Mozilla Headers.delete documentation> 
 delete :: (MonadIO m, ToJSString name) => Headers -> name -> m ()
 delete self name = liftIO (js_delete self (toJSString name))
  
-foreign import javascript unsafe "$1[\"get\"]($2)" js_get ::
+foreign import javascript safe "$1[\"get\"]($2)" js_get ::
         Headers -> JSString -> IO (Nullable JSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.get Mozilla Headers.get documentation> 
@@ -75,7 +75,7 @@
   = liftIO
       (fromJust . fromMaybeJSString <$> (js_get self (toJSString name)))
  
-foreign import javascript unsafe "($1[\"has\"]($2) ? 1 : 0)" js_has
+foreign import javascript safe "($1[\"has\"]($2) ? 1 : 0)" js_has
         :: Headers -> JSString -> IO Bool
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.has Mozilla Headers.has documentation> 
@@ -86,7 +86,7 @@
 has_ :: (MonadIO m, ToJSString name) => Headers -> name -> m ()
 has_ self name = liftIO (void (js_has self (toJSString name)))
  
-foreign import javascript unsafe "$1[\"set\"]($2, $3)" js_set ::
+foreign import javascript safe "$1[\"set\"]($2, $3)" js_set ::
         Headers -> JSString -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.set Mozilla Headers.set documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/History.hs b/src/GHCJS/DOM/JSFFI/Generated/History.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/History.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/History.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"back\"]()" js_back ::
@@ -50,7 +50,7 @@
 go :: (MonadIO m) => History -> Maybe Int -> m ()
 go self distance = liftIO (js_go self (maybeToOptional distance))
  
-foreign import javascript unsafe "$1[\"pushState\"]($2, $3, $4)"
+foreign import javascript safe "$1[\"pushState\"]($2, $3, $4)"
         js_pushState ::
         History -> JSVal -> JSString -> Optional JSString -> IO ()
 
@@ -64,7 +64,7 @@
          (toJSString title)
          (toOptionalJSString url))
  
-foreign import javascript unsafe "$1[\"replaceState\"]($2, $3, $4)"
+foreign import javascript safe "$1[\"replaceState\"]($2, $3, $4)"
         js_replaceState ::
         History -> JSVal -> JSString -> Optional JSString -> IO ()
 
@@ -85,7 +85,7 @@
 getLength :: (MonadIO m) => History -> m Word
 getLength self = liftIO (js_getLength self)
  
-foreign import javascript unsafe "$1[\"scrollRestoration\"] = $2;"
+foreign import javascript safe "$1[\"scrollRestoration\"] = $2;"
         js_setScrollRestoration :: History -> JSVal -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/History.scrollRestoration Mozilla History.scrollRestoration documentation> 
@@ -94,7 +94,7 @@
 setScrollRestoration self val
   = liftIO (js_setScrollRestoration self (pToJSVal val))
  
-foreign import javascript unsafe "$1[\"scrollRestoration\"]"
+foreign import javascript safe "$1[\"scrollRestoration\"]"
         js_getScrollRestoration :: History -> IO JSVal
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/History.scrollRestoration Mozilla History.scrollRestoration documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBCursor.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBCursor.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBCursor.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBCursor.hs
@@ -26,10 +26,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"update\"]($2)" js_update ::
+foreign import javascript safe "$1[\"update\"]($2)" js_update ::
         IDBCursor -> JSVal -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.update Mozilla IDBCursor.update documentation> 
@@ -50,14 +50,14 @@
          (toJSVal value >>=
             \ value' -> js_update (toIDBCursor self) value'))
  
-foreign import javascript unsafe "$1[\"advance\"]($2)" js_advance
-        :: IDBCursor -> Word -> IO ()
+foreign import javascript safe "$1[\"advance\"]($2)" js_advance ::
+        IDBCursor -> Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.advance Mozilla IDBCursor.advance documentation> 
 advance :: (MonadIO m, IsIDBCursor self) => self -> Word -> m ()
 advance self count = liftIO (js_advance (toIDBCursor self) count)
  
-foreign import javascript unsafe "$1[\"continue\"]($2)" js_continue
+foreign import javascript safe "$1[\"continue\"]($2)" js_continue
         :: IDBCursor -> Optional JSVal -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.continue Mozilla IDBCursor.continue documentation> 
@@ -69,9 +69,8 @@
       (mapM toJSVal key >>=
          \ key' -> js_continue (toIDBCursor self) (maybeToOptional key'))
  
-foreign import javascript unsafe
-        "$1[\"continuePrimaryKey\"]($2, $3)" js_continuePrimaryKey ::
-        IDBCursor -> JSVal -> JSVal -> IO ()
+foreign import javascript safe "$1[\"continuePrimaryKey\"]($2, $3)"
+        js_continuePrimaryKey :: IDBCursor -> JSVal -> JSVal -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.continuePrimaryKey Mozilla IDBCursor.continuePrimaryKey documentation> 
 continuePrimaryKey ::
@@ -85,7 +84,7 @@
              \ key' -> js_continuePrimaryKey (toIDBCursor self) key'
              primaryKey')
  
-foreign import javascript unsafe "$1[\"delete\"]()" js_delete ::
+foreign import javascript safe "$1[\"delete\"]()" js_delete ::
         IDBCursor -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.delete Mozilla IDBCursor.delete documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBCursorWithValue.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBCursorWithValue.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBCursorWithValue.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBCursorWithValue.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBDatabase.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBDatabase.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBDatabase.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBDatabase.hs
@@ -27,11 +27,11 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe
-        "$1[\"createObjectStore\"]($2, $3)" js_createObjectStore ::
+foreign import javascript safe "$1[\"createObjectStore\"]($2, $3)"
+        js_createObjectStore ::
         IDBDatabase ->
           JSString -> Optional IDBObjectStoreParameters -> IO IDBObjectStore
 
@@ -55,7 +55,7 @@
          (js_createObjectStore self (toJSString name)
             (maybeToOptional parameters)))
  
-foreign import javascript unsafe "$1[\"deleteObjectStore\"]($2)"
+foreign import javascript safe "$1[\"deleteObjectStore\"]($2)"
         js_deleteObjectStore :: IDBDatabase -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.deleteObjectStore Mozilla IDBDatabase.deleteObjectStore documentation> 
@@ -64,7 +64,7 @@
 deleteObjectStore self name
   = liftIO (js_deleteObjectStore self (toJSString name))
  
-foreign import javascript unsafe "$1[\"transaction\"]($2, $3)"
+foreign import javascript safe "$1[\"transaction\"]($2, $3)"
         js_transaction ::
         IDBDatabase ->
           StringOrStrings -> Optional IDBTransactionMode -> IO IDBTransaction
@@ -127,7 +127,7 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.onclose Mozilla IDBDatabase.onclose documentation> 
 closeEvent :: EventName IDBDatabase CloseEvent
-closeEvent = unsafeEventName (toJSString "close")
+closeEvent = unsafeEventNameAsync (toJSString "close")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.onerror Mozilla IDBDatabase.onerror documentation> 
 error :: EventName IDBDatabase Event
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBFactory.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBFactory.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBFactory.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBFactory.hs
@@ -24,10 +24,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"open\"]($2, $3)" js_open ::
+foreign import javascript safe "$1[\"open\"]($2, $3)" js_open ::
         IDBFactory -> JSString -> Optional Double -> IO IDBOpenDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.open Mozilla IDBFactory.open documentation> 
@@ -49,7 +49,7 @@
          (js_open self (toJSString name)
             (maybeToOptional (fmap fromIntegral version))))
  
-foreign import javascript unsafe "$1[\"deleteDatabase\"]($2)"
+foreign import javascript safe "$1[\"deleteDatabase\"]($2)"
         js_deleteDatabase :: IDBFactory -> JSString -> IO IDBOpenDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.deleteDatabase Mozilla IDBFactory.deleteDatabase documentation> 
@@ -65,7 +65,7 @@
 deleteDatabase_ self name
   = liftIO (void (js_deleteDatabase self (toJSString name)))
  
-foreign import javascript unsafe "$1[\"cmp\"]($2, $3)" js_cmp ::
+foreign import javascript safe "$1[\"cmp\"]($2, $3)" js_cmp ::
         IDBFactory -> JSVal -> JSVal -> IO Int
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.cmp Mozilla IDBFactory.cmp documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBIndex.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBIndex.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBIndex.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBIndex.hs
@@ -35,10 +35,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"openCursor\"]($2, $3)"
+foreign import javascript safe "$1[\"openCursor\"]($2, $3)"
         js_openCursorRange ::
         IDBIndex ->
           Optional IDBKeyRange ->
@@ -64,7 +64,7 @@
          (js_openCursorRange self (maybeToOptional range)
             (maybeToOptional direction)))
  
-foreign import javascript unsafe "$1[\"openCursor\"]($2, $3)"
+foreign import javascript safe "$1[\"openCursor\"]($2, $3)"
         js_openCursor ::
         IDBIndex -> JSVal -> Optional IDBCursorDirection -> IO IDBRequest
 
@@ -87,7 +87,7 @@
          (toJSVal key >>= \ key' -> js_openCursor self key'
             (maybeToOptional direction)))
  
-foreign import javascript unsafe "$1[\"openKeyCursor\"]($2, $3)"
+foreign import javascript safe "$1[\"openKeyCursor\"]($2, $3)"
         js_openKeyCursorRange ::
         IDBIndex ->
           Optional IDBKeyRange ->
@@ -113,7 +113,7 @@
          (js_openKeyCursorRange self (maybeToOptional range)
             (maybeToOptional direction)))
  
-foreign import javascript unsafe "$1[\"openKeyCursor\"]($2, $3)"
+foreign import javascript safe "$1[\"openKeyCursor\"]($2, $3)"
         js_openKeyCursor ::
         IDBIndex -> JSVal -> Optional IDBCursorDirection -> IO IDBRequest
 
@@ -136,7 +136,7 @@
          (toJSVal key >>= \ key' -> js_openKeyCursor self key'
             (maybeToOptional direction)))
  
-foreign import javascript unsafe "$1[\"get\"]($2)" js_getRange ::
+foreign import javascript safe "$1[\"get\"]($2)" js_getRange ::
         IDBIndex -> Optional IDBKeyRange -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
@@ -149,7 +149,7 @@
 getRange_ self key
   = liftIO (void (js_getRange self (maybeToOptional key)))
  
-foreign import javascript unsafe "$1[\"get\"]($2)" js_get ::
+foreign import javascript safe "$1[\"get\"]($2)" js_get ::
         IDBIndex -> JSVal -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
@@ -161,8 +161,8 @@
 get_ self key
   = liftIO (void (toJSVal key >>= \ key' -> js_get self key'))
  
-foreign import javascript unsafe "$1[\"getKey\"]($2)"
-        js_getKeyRange :: IDBIndex -> Optional IDBKeyRange -> IO IDBRequest
+foreign import javascript safe "$1[\"getKey\"]($2)" js_getKeyRange
+        :: IDBIndex -> Optional IDBKeyRange -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
 getKeyRange ::
@@ -176,7 +176,7 @@
 getKeyRange_ self key
   = liftIO (void (js_getKeyRange self (maybeToOptional key)))
  
-foreign import javascript unsafe "$1[\"getKey\"]($2)" js_getKey ::
+foreign import javascript safe "$1[\"getKey\"]($2)" js_getKey ::
         IDBIndex -> JSVal -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
@@ -190,7 +190,7 @@
 getKey_ self key
   = liftIO (void (toJSVal key >>= \ key' -> js_getKey self key'))
  
-foreign import javascript unsafe "$1[\"getAll\"]($2, $3)"
+foreign import javascript safe "$1[\"getAll\"]($2, $3)"
         js_getAllRange ::
         IDBIndex -> Optional IDBKeyRange -> Optional Word -> IO IDBRequest
 
@@ -212,7 +212,7 @@
          (js_getAllRange self (maybeToOptional range)
             (maybeToOptional count)))
  
-foreign import javascript unsafe "$1[\"getAll\"]($2, $3)" js_getAll
+foreign import javascript safe "$1[\"getAll\"]($2, $3)" js_getAll
         :: IDBIndex -> JSVal -> Optional Word -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAll Mozilla IDBIndex.getAll documentation> 
@@ -233,7 +233,7 @@
          (toJSVal key >>= \ key' -> js_getAll self key'
             (maybeToOptional count)))
  
-foreign import javascript unsafe "$1[\"getAllKeys\"]($2, $3)"
+foreign import javascript safe "$1[\"getAllKeys\"]($2, $3)"
         js_getAllKeysRange ::
         IDBIndex -> Optional IDBKeyRange -> Optional Word -> IO IDBRequest
 
@@ -255,7 +255,7 @@
          (js_getAllKeysRange self (maybeToOptional range)
             (maybeToOptional count)))
  
-foreign import javascript unsafe "$1[\"getAllKeys\"]($2, $3)"
+foreign import javascript safe "$1[\"getAllKeys\"]($2, $3)"
         js_getAllKeys ::
         IDBIndex -> JSVal -> Optional Word -> IO IDBRequest
 
@@ -277,8 +277,8 @@
          (toJSVal key >>= \ key' -> js_getAllKeys self key'
             (maybeToOptional count)))
  
-foreign import javascript unsafe "$1[\"count\"]($2)" js_countRange
-        :: IDBIndex -> Optional IDBKeyRange -> IO IDBRequest
+foreign import javascript safe "$1[\"count\"]($2)" js_countRange ::
+        IDBIndex -> Optional IDBKeyRange -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
 countRange ::
@@ -291,7 +291,7 @@
 countRange_ self range
   = liftIO (void (js_countRange self (maybeToOptional range)))
  
-foreign import javascript unsafe "$1[\"count\"]($2)" js_count ::
+foreign import javascript safe "$1[\"count\"]($2)" js_count ::
         IDBIndex -> JSVal -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
@@ -305,7 +305,7 @@
 count_ self key
   = liftIO (void (toJSVal key >>= \ key' -> js_count self key'))
  
-foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+foreign import javascript safe "$1[\"name\"] = $2;" js_setName ::
         IDBIndex -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.name Mozilla IDBIndex.name documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBKeyRange.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBKeyRange.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBKeyRange.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBKeyRange.hs
@@ -26,91 +26,82 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"only\"]($2)" js_only ::
-        IDBKeyRange -> JSVal -> IO IDBKeyRange
+foreign import javascript safe
+        "window[\"IDBKeyRange\"][\"only\"]($1)" js_only ::
+        JSVal -> IO IDBKeyRange
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.only Mozilla IDBKeyRange.only documentation> 
-only ::
-     (MonadIO m, ToJSVal value) => IDBKeyRange -> value -> m IDBKeyRange
-only self value
-  = liftIO (toJSVal value >>= \ value' -> js_only self value')
+only :: (MonadIO m, ToJSVal value) => value -> m IDBKeyRange
+only value = liftIO (toJSVal value >>= \ value' -> js_only value')
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.only Mozilla IDBKeyRange.only documentation> 
-only_ :: (MonadIO m, ToJSVal value) => IDBKeyRange -> value -> m ()
-only_ self value
-  = liftIO (void (toJSVal value >>= \ value' -> js_only self value'))
+only_ :: (MonadIO m, ToJSVal value) => value -> m ()
+only_ value
+  = liftIO (void (toJSVal value >>= \ value' -> js_only value'))
  
-foreign import javascript unsafe "$1[\"lowerBound\"]($2, $3)"
-        js_lowerBound :: IDBKeyRange -> JSVal -> Bool -> IO IDBKeyRange
+foreign import javascript safe
+        "window[\"IDBKeyRange\"][\"lowerBound\"]($1,\n$2)" js_lowerBound ::
+        JSVal -> Bool -> IO IDBKeyRange
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerBound Mozilla IDBKeyRange.lowerBound documentation> 
 lowerBound ::
-           (MonadIO m, ToJSVal lower) =>
-             IDBKeyRange -> lower -> Bool -> m IDBKeyRange
-lowerBound self lower open
-  = liftIO
-      (toJSVal lower >>= \ lower' -> js_lowerBound self lower' open)
+           (MonadIO m, ToJSVal lower) => lower -> Bool -> m IDBKeyRange
+lowerBound lower open
+  = liftIO (toJSVal lower >>= \ lower' -> js_lowerBound lower' open)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerBound Mozilla IDBKeyRange.lowerBound documentation> 
-lowerBound_ ::
-            (MonadIO m, ToJSVal lower) => IDBKeyRange -> lower -> Bool -> m ()
-lowerBound_ self lower open
+lowerBound_ :: (MonadIO m, ToJSVal lower) => lower -> Bool -> m ()
+lowerBound_ lower open
   = liftIO
-      (void
-         (toJSVal lower >>= \ lower' -> js_lowerBound self lower' open))
+      (void (toJSVal lower >>= \ lower' -> js_lowerBound lower' open))
  
-foreign import javascript unsafe "$1[\"upperBound\"]($2, $3)"
-        js_upperBound :: IDBKeyRange -> JSVal -> Bool -> IO IDBKeyRange
+foreign import javascript safe
+        "window[\"IDBKeyRange\"][\"upperBound\"]($1,\n$2)" js_upperBound ::
+        JSVal -> Bool -> IO IDBKeyRange
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperBound Mozilla IDBKeyRange.upperBound documentation> 
 upperBound ::
-           (MonadIO m, ToJSVal upper) =>
-             IDBKeyRange -> upper -> Bool -> m IDBKeyRange
-upperBound self upper open
-  = liftIO
-      (toJSVal upper >>= \ upper' -> js_upperBound self upper' open)
+           (MonadIO m, ToJSVal upper) => upper -> Bool -> m IDBKeyRange
+upperBound upper open
+  = liftIO (toJSVal upper >>= \ upper' -> js_upperBound upper' open)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperBound Mozilla IDBKeyRange.upperBound documentation> 
-upperBound_ ::
-            (MonadIO m, ToJSVal upper) => IDBKeyRange -> upper -> Bool -> m ()
-upperBound_ self upper open
+upperBound_ :: (MonadIO m, ToJSVal upper) => upper -> Bool -> m ()
+upperBound_ upper open
   = liftIO
-      (void
-         (toJSVal upper >>= \ upper' -> js_upperBound self upper' open))
+      (void (toJSVal upper >>= \ upper' -> js_upperBound upper' open))
  
-foreign import javascript unsafe "$1[\"bound\"]($2, $3, $4, $5)"
-        js_bound ::
-        IDBKeyRange -> JSVal -> JSVal -> Bool -> Bool -> IO IDBKeyRange
+foreign import javascript safe
+        "window[\"IDBKeyRange\"][\"bound\"]($1,\n$2, $3, $4)" js_bound ::
+        JSVal -> JSVal -> Bool -> Bool -> IO IDBKeyRange
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.bound Mozilla IDBKeyRange.bound documentation> 
 bound ::
       (MonadIO m, ToJSVal lower, ToJSVal upper) =>
-        IDBKeyRange -> lower -> upper -> Bool -> Bool -> m IDBKeyRange
-bound self lower upper lowerOpen upperOpen
+        lower -> upper -> Bool -> Bool -> m IDBKeyRange
+bound lower upper lowerOpen upperOpen
   = liftIO
       (toJSVal upper >>=
-         \ upper' ->
-           toJSVal lower >>= \ lower' -> js_bound self lower' upper'
+         \ upper' -> toJSVal lower >>= \ lower' -> js_bound lower' upper'
          lowerOpen
          upperOpen)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.bound Mozilla IDBKeyRange.bound documentation> 
 bound_ ::
        (MonadIO m, ToJSVal lower, ToJSVal upper) =>
-         IDBKeyRange -> lower -> upper -> Bool -> Bool -> m ()
-bound_ self lower upper lowerOpen upperOpen
+         lower -> upper -> Bool -> Bool -> m ()
+bound_ lower upper lowerOpen upperOpen
   = liftIO
       (void
          (toJSVal upper >>=
-            \ upper' ->
-              toJSVal lower >>= \ lower' -> js_bound self lower' upper'
+            \ upper' -> toJSVal lower >>= \ lower' -> js_bound lower' upper'
             lowerOpen
             upperOpen))
  
-foreign import javascript unsafe "($1[\"includes\"]($2) ? 1 : 0)"
+foreign import javascript safe "($1[\"includes\"]($2) ? 1 : 0)"
         js_includes :: IDBKeyRange -> JSVal -> IO Bool
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.includes Mozilla IDBKeyRange.includes documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBObjectStore.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBObjectStore.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBObjectStore.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBObjectStore.hs
@@ -39,10 +39,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"put\"]($2, $3)" js_put ::
+foreign import javascript safe "$1[\"put\"]($2, $3)" js_put ::
         IDBObjectStore -> JSVal -> Optional JSVal -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.put Mozilla IDBObjectStore.put documentation> 
@@ -68,7 +68,7 @@
               toJSVal value >>= \ value' -> js_put self value'
                 (maybeToOptional key')))
  
-foreign import javascript unsafe "$1[\"add\"]($2, $3)" js_add ::
+foreign import javascript safe "$1[\"add\"]($2, $3)" js_add ::
         IDBObjectStore -> JSVal -> Optional JSVal -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.add Mozilla IDBObjectStore.add documentation> 
@@ -94,9 +94,8 @@
               toJSVal value >>= \ value' -> js_add self value'
                 (maybeToOptional key')))
  
-foreign import javascript unsafe "$1[\"delete\"]($2)"
-        js_deleteRange ::
-        IDBObjectStore -> Optional IDBKeyRange -> IO IDBRequest
+foreign import javascript safe "$1[\"delete\"]($2)" js_deleteRange
+        :: IDBObjectStore -> Optional IDBKeyRange -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
 deleteRange ::
@@ -110,7 +109,7 @@
 deleteRange_ self keyRange
   = liftIO (void (js_deleteRange self (maybeToOptional keyRange)))
  
-foreign import javascript unsafe "$1[\"delete\"]($2)" js_delete ::
+foreign import javascript safe "$1[\"delete\"]($2)" js_delete ::
         IDBObjectStore -> JSVal -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
@@ -125,7 +124,7 @@
 delete_ self key
   = liftIO (void (toJSVal key >>= \ key' -> js_delete self key'))
  
-foreign import javascript unsafe "$1[\"get\"]($2)" js_getRange ::
+foreign import javascript safe "$1[\"get\"]($2)" js_getRange ::
         IDBObjectStore -> Optional IDBKeyRange -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
@@ -139,7 +138,7 @@
 getRange_ self key
   = liftIO (void (js_getRange self (maybeToOptional key)))
  
-foreign import javascript unsafe "$1[\"get\"]($2)" js_get ::
+foreign import javascript safe "$1[\"get\"]($2)" js_get ::
         IDBObjectStore -> JSVal -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
@@ -152,9 +151,8 @@
 get_ self key
   = liftIO (void (toJSVal key >>= \ key' -> js_get self key'))
  
-foreign import javascript unsafe "$1[\"getKey\"]($2)"
-        js_getKeyRange ::
-        IDBObjectStore -> Optional IDBKeyRange -> IO IDBRequest
+foreign import javascript safe "$1[\"getKey\"]($2)" js_getKeyRange
+        :: IDBObjectStore -> Optional IDBKeyRange -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getKey Mozilla IDBObjectStore.getKey documentation> 
 getKeyRange ::
@@ -168,7 +166,7 @@
 getKeyRange_ self key
   = liftIO (void (js_getKeyRange self (maybeToOptional key)))
  
-foreign import javascript unsafe "$1[\"getKey\"]($2)" js_getKey ::
+foreign import javascript safe "$1[\"getKey\"]($2)" js_getKey ::
         IDBObjectStore -> JSVal -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getKey Mozilla IDBObjectStore.getKey documentation> 
@@ -183,7 +181,7 @@
 getKey_ self key
   = liftIO (void (toJSVal key >>= \ key' -> js_getKey self key'))
  
-foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+foreign import javascript safe "$1[\"clear\"]()" js_clear ::
         IDBObjectStore -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.clear Mozilla IDBObjectStore.clear documentation> 
@@ -194,7 +192,7 @@
 clear_ :: (MonadIO m) => IDBObjectStore -> m ()
 clear_ self = liftIO (void (js_clear self))
  
-foreign import javascript unsafe "$1[\"openCursor\"]($2, $3)"
+foreign import javascript safe "$1[\"openCursor\"]($2, $3)"
         js_openCursorRange ::
         IDBObjectStore ->
           Optional IDBKeyRange ->
@@ -221,7 +219,7 @@
          (js_openCursorRange self (maybeToOptional range)
             (maybeToOptional direction)))
  
-foreign import javascript unsafe "$1[\"openCursor\"]($2, $3)"
+foreign import javascript safe "$1[\"openCursor\"]($2, $3)"
         js_openCursor ::
         IDBObjectStore ->
           JSVal -> Optional IDBCursorDirection -> IO IDBRequest
@@ -245,7 +243,7 @@
          (toJSVal key >>= \ key' -> js_openCursor self key'
             (maybeToOptional direction)))
  
-foreign import javascript unsafe "$1[\"openKeyCursor\"]($2, $3)"
+foreign import javascript safe "$1[\"openKeyCursor\"]($2, $3)"
         js_openKeyCursorRange ::
         IDBObjectStore ->
           Optional IDBKeyRange ->
@@ -272,7 +270,7 @@
          (js_openKeyCursorRange self (maybeToOptional range)
             (maybeToOptional direction)))
  
-foreign import javascript unsafe "$1[\"openKeyCursor\"]($2, $3)"
+foreign import javascript safe "$1[\"openKeyCursor\"]($2, $3)"
         js_openKeyCursor ::
         IDBObjectStore ->
           JSVal -> Optional IDBCursorDirection -> IO IDBRequest
@@ -296,7 +294,7 @@
          (toJSVal key >>= \ key' -> js_openKeyCursor self key'
             (maybeToOptional direction)))
  
-foreign import javascript unsafe "$1[\"getAll\"]($2, $3)"
+foreign import javascript safe "$1[\"getAll\"]($2, $3)"
         js_getAllRange ::
         IDBObjectStore ->
           Optional IDBKeyRange -> Optional Word -> IO IDBRequest
@@ -320,7 +318,7 @@
          (js_getAllRange self (maybeToOptional range)
             (maybeToOptional count)))
  
-foreign import javascript unsafe "$1[\"getAll\"]($2, $3)" js_getAll
+foreign import javascript safe "$1[\"getAll\"]($2, $3)" js_getAll
         :: IDBObjectStore -> JSVal -> Optional Word -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAll Mozilla IDBObjectStore.getAll documentation> 
@@ -342,7 +340,7 @@
          (toJSVal key >>= \ key' -> js_getAll self key'
             (maybeToOptional count)))
  
-foreign import javascript unsafe "$1[\"getAllKeys\"]($2, $3)"
+foreign import javascript safe "$1[\"getAllKeys\"]($2, $3)"
         js_getAllKeysRange ::
         IDBObjectStore ->
           Optional IDBKeyRange -> Optional Word -> IO IDBRequest
@@ -366,7 +364,7 @@
          (js_getAllKeysRange self (maybeToOptional range)
             (maybeToOptional count)))
  
-foreign import javascript unsafe "$1[\"getAllKeys\"]($2, $3)"
+foreign import javascript safe "$1[\"getAllKeys\"]($2, $3)"
         js_getAllKeys ::
         IDBObjectStore -> JSVal -> Optional Word -> IO IDBRequest
 
@@ -389,7 +387,7 @@
          (toJSVal key >>= \ key' -> js_getAllKeys self key'
             (maybeToOptional count)))
  
-foreign import javascript unsafe "$1[\"createIndex\"]($2, $3, $4)"
+foreign import javascript safe "$1[\"createIndex\"]($2, $3, $4)"
         js_createIndex ::
         IDBObjectStore ->
           JSString ->
@@ -420,7 +418,7 @@
               js_createIndex self (toJSString name) (StringOrStrings keyPath')
             (maybeToOptional options)))
  
-foreign import javascript unsafe "$1[\"index\"]($2)" js_index ::
+foreign import javascript safe "$1[\"index\"]($2)" js_index ::
         IDBObjectStore -> JSString -> IO IDBIndex
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.index Mozilla IDBObjectStore.index documentation> 
@@ -434,7 +432,7 @@
        (MonadIO m, ToJSString name) => IDBObjectStore -> name -> m ()
 index_ self name = liftIO (void (js_index self (toJSString name)))
  
-foreign import javascript unsafe "$1[\"deleteIndex\"]($2)"
+foreign import javascript safe "$1[\"deleteIndex\"]($2)"
         js_deleteIndex :: IDBObjectStore -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.deleteIndex Mozilla IDBObjectStore.deleteIndex documentation> 
@@ -443,8 +441,8 @@
 deleteIndex self name
   = liftIO (js_deleteIndex self (toJSString name))
  
-foreign import javascript unsafe "$1[\"count\"]($2)" js_countRange
-        :: IDBObjectStore -> Optional IDBKeyRange -> IO IDBRequest
+foreign import javascript safe "$1[\"count\"]($2)" js_countRange ::
+        IDBObjectStore -> Optional IDBKeyRange -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
 countRange ::
@@ -458,7 +456,7 @@
 countRange_ self range
   = liftIO (void (js_countRange self (maybeToOptional range)))
  
-foreign import javascript unsafe "$1[\"count\"]($2)" js_count ::
+foreign import javascript safe "$1[\"count\"]($2)" js_count ::
         IDBObjectStore -> JSVal -> IO IDBRequest
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
@@ -472,7 +470,7 @@
 count_ self key
   = liftIO (void (toJSVal key >>= \ key' -> js_count self key'))
  
-foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+foreign import javascript safe "$1[\"name\"] = $2;" js_setName ::
         IDBObjectStore -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.name Mozilla IDBObjectStore.name documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBOpenDBRequest.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBOpenDBRequest.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBOpenDBRequest.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBOpenDBRequest.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBOpenDBRequest.onblocked Mozilla IDBOpenDBRequest.onblocked documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBRequest.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBRequest.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBRequest.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBRequest.hs
@@ -27,10 +27,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"result\"]" js_getResult ::
+foreign import javascript safe "$1[\"result\"]" js_getResult ::
         IDBRequest -> IO (Nullable IDBRequestResult)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.result Mozilla IDBRequest.result documentation> 
@@ -56,7 +56,7 @@
   = liftIO
       (fromJust . nullableToMaybe <$> (js_getResult (toIDBRequest self)))
  
-foreign import javascript unsafe "$1[\"error\"]" js_getError ::
+foreign import javascript safe "$1[\"error\"]" js_getError ::
         IDBRequest -> IO (Nullable DOMError)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.error Mozilla IDBRequest.error documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBTransaction.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBTransaction.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBTransaction.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBTransaction.hs
@@ -25,10 +25,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"objectStore\"]($2)"
+foreign import javascript safe "$1[\"objectStore\"]($2)"
         js_objectStore :: IDBTransaction -> JSString -> IO IDBObjectStore
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.objectStore Mozilla IDBTransaction.objectStore documentation> 
@@ -44,7 +44,7 @@
 objectStore_ self name
   = liftIO (void (js_objectStore self (toJSString name)))
  
-foreign import javascript unsafe "$1[\"abort\"]()" js_abort ::
+foreign import javascript safe "$1[\"abort\"]()" js_abort ::
         IDBTransaction -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.abort Mozilla IDBTransaction.abort documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBVersionChangeEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBVersionChangeEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IDBVersionChangeEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBVersionChangeEvent.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ImageData.hs b/src/GHCJS/DOM/JSFFI/Generated/ImageData.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ImageData.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ImageData.hs
@@ -24,10 +24,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe
+foreign import javascript safe
         "new window[\"ImageData\"]($1, $2,\n$3)" js_newImageData ::
         Uint8ClampedArray -> Word -> Optional Word -> IO ImageData
 
@@ -40,9 +40,8 @@
       (js_newImageData (toUint8ClampedArray data') sw
          (maybeToOptional sh))
  
-foreign import javascript unsafe
-        "new window[\"ImageData\"]($1, $2)" js_newImageData' ::
-        Word -> Word -> IO ImageData
+foreign import javascript safe "new window[\"ImageData\"]($1, $2)"
+        js_newImageData' :: Word -> Word -> IO ImageData
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData Mozilla ImageData documentation> 
 newImageData' :: (MonadIO m) => Word -> Word -> m ImageData
diff --git a/src/GHCJS/DOM/JSFFI/Generated/InputEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/InputEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/InputEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/InputEvent.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/InspectorFrontendHost.hs b/src/GHCJS/DOM/JSFFI/Generated/InspectorFrontendHost.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/InspectorFrontendHost.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/InspectorFrontendHost.hs
@@ -43,7 +43,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"loaded\"]()" js_loaded ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserver.hs b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserver.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserver.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserver.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverCallback.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverCallback Mozilla IntersectionObserverCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverEntry.hs b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverEntry.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverEntry.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverEntry.hs
@@ -28,7 +28,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/KeyboardEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/KeyboardEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/KeyboardEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/KeyboardEvent.hs
@@ -34,7 +34,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/KeyframeEffect.hs b/src/GHCJS/DOM/JSFFI/Generated/KeyframeEffect.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/KeyframeEffect.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/KeyframeEffect.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Location.hs b/src/GHCJS/DOM/JSFFI/Generated/Location.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Location.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Location.hs
@@ -31,7 +31,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"assign\"]($2)" js_assign ::
@@ -69,7 +69,7 @@
 getHref :: (MonadIO m, FromJSString result) => Location -> m result
 getHref self = liftIO (fromJSString <$> (js_getHref self))
  
-foreign import javascript unsafe "$1[\"protocol\"] = $2;"
+foreign import javascript safe "$1[\"protocol\"] = $2;"
         js_setProtocol :: Location -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.protocol Mozilla Location.protocol documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaController.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaController.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaController.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaController.hs
@@ -32,7 +32,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
@@ -155,8 +155,8 @@
 getPlaybackRate :: (MonadIO m) => MediaController -> m Double
 getPlaybackRate self = liftIO (js_getPlaybackRate self)
  
-foreign import javascript unsafe "$1[\"volume\"] = $2;"
-        js_setVolume :: MediaController -> Double -> IO ()
+foreign import javascript safe "$1[\"volume\"] = $2;" js_setVolume
+        :: MediaController -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.volume Mozilla MediaController.volume documentation> 
 setVolume :: (MonadIO m) => MediaController -> Double -> m ()
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaControlsHost.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaControlsHost.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaControlsHost.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaControlsHost.hs
@@ -50,7 +50,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaDeviceInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaDeviceInfo.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaDeviceInfo.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaDeviceInfo.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaDevices.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaDevices.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaDevices.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaDevices.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript interruptible
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaElementAudioSourceNode.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaElementAudioSourceNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaElementAudioSourceNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaElementAudioSourceNode.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"mediaElement\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaEncryptedEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaEncryptedEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaEncryptedEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaEncryptedEvent.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaError.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaError.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaError.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaError.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern MEDIA_ERR_ABORTED = 1
 pattern MEDIA_ERR_NETWORK = 2
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeyMessageEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyMessageEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaKeyMessageEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyMessageEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeySession.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeySession.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaKeySession.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeySession.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript interruptible
@@ -134,4 +134,4 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.onmessage Mozilla WebKitMediaKeySession.onmessage documentation> 
 message :: EventName MediaKeySession MessageEvent
-message = unsafeEventName (toJSString "message")
+message = unsafeEventNameAsync (toJSString "message")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeyStatusMap.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyStatusMap.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaKeyStatusMap.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyStatusMap.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "($1[\"has\"]($2) ? 1 : 0)" js_has
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeySystemAccess.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeySystemAccess.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaKeySystemAccess.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeySystemAccess.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"getConfiguration\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeys.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeys.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaKeys.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeys.hs
@@ -24,10 +24,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"createSession\"]($2)"
+foreign import javascript safe "$1[\"createSession\"]($2)"
         js_createSession ::
         MediaKeys -> Optional MediaKeySessionType -> IO MediaKeySession
 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaList.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaList.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
@@ -57,7 +57,7 @@
 itemUnchecked self index
   = liftIO (fromJust . fromMaybeJSString <$> (js_item self index))
  
-foreign import javascript unsafe "$1[\"deleteMedium\"]($2)"
+foreign import javascript safe "$1[\"deleteMedium\"]($2)"
         js_deleteMedium :: MediaList -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.deleteMedium Mozilla MediaList.deleteMedium documentation> 
@@ -66,7 +66,7 @@
 deleteMedium self oldMedium
   = liftIO (js_deleteMedium self (toJSString oldMedium))
  
-foreign import javascript unsafe "$1[\"appendMedium\"]($2)"
+foreign import javascript safe "$1[\"appendMedium\"]($2)"
         js_appendMedium :: MediaList -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.appendMedium Mozilla MediaList.appendMedium documentation> 
@@ -75,7 +75,7 @@
 appendMedium self newMedium
   = liftIO (js_appendMedium self (toJSString newMedium))
  
-foreign import javascript unsafe "$1[\"mediaText\"] = $2;"
+foreign import javascript safe "$1[\"mediaText\"] = $2;"
         js_setMediaText :: MediaList -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.mediaText Mozilla MediaList.mediaText documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaQueryList.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaQueryList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaQueryList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaQueryList.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"addListener\"]($2)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaQueryListListener.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaQueryListListener.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaQueryListListener.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaQueryListListener.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryListListener Mozilla MediaQueryListListener documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaRemoteControls.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaRemoteControls.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaRemoteControls.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaRemoteControls.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaSession.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaSession.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaSession.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaSession.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"MediaSession\"]($1)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaSource.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaSource.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaSource.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaSource.hs
@@ -32,7 +32,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"MediaSource\"]()"
@@ -42,7 +42,7 @@
 newMediaSource :: (MonadIO m) => m MediaSource
 newMediaSource = liftIO (js_newMediaSource)
  
-foreign import javascript unsafe "$1[\"addSourceBuffer\"]($2)"
+foreign import javascript safe "$1[\"addSourceBuffer\"]($2)"
         js_addSourceBuffer :: MediaSource -> JSString -> IO SourceBuffer
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.addSourceBuffer Mozilla MediaSource.addSourceBuffer documentation> 
@@ -58,7 +58,7 @@
 addSourceBuffer_ self type'
   = liftIO (void (js_addSourceBuffer self (toJSString type')))
  
-foreign import javascript unsafe "$1[\"removeSourceBuffer\"]($2)"
+foreign import javascript safe "$1[\"removeSourceBuffer\"]($2)"
         js_removeSourceBuffer :: MediaSource -> SourceBuffer -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.removeSourceBuffer Mozilla MediaSource.removeSourceBuffer documentation> 
@@ -67,7 +67,7 @@
 removeSourceBuffer self buffer
   = liftIO (js_removeSourceBuffer self buffer)
  
-foreign import javascript unsafe "$1[\"endOfStream\"]($2)"
+foreign import javascript safe "$1[\"endOfStream\"]($2)"
         js_endOfStream :: MediaSource -> Optional EndOfStreamError -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.endOfStream Mozilla MediaSource.endOfStream documentation> 
@@ -77,22 +77,20 @@
   = liftIO (js_endOfStream self (maybeToOptional error))
  
 foreign import javascript unsafe
-        "($1[\"isTypeSupported\"]($2) ? 1 : 0)" js_isTypeSupported ::
-        MediaSource -> JSString -> IO Bool
+        "(window[\"MediaSource\"][\"isTypeSupported\"]($1) ? 1 : 0)"
+        js_isTypeSupported :: JSString -> IO Bool
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.isTypeSupported Mozilla MediaSource.isTypeSupported documentation> 
-isTypeSupported ::
-                (MonadIO m, ToJSString type') => MediaSource -> type' -> m Bool
-isTypeSupported self type'
-  = liftIO (js_isTypeSupported self (toJSString type'))
+isTypeSupported :: (MonadIO m, ToJSString type') => type' -> m Bool
+isTypeSupported type'
+  = liftIO (js_isTypeSupported (toJSString type'))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.isTypeSupported Mozilla MediaSource.isTypeSupported documentation> 
-isTypeSupported_ ::
-                 (MonadIO m, ToJSString type') => MediaSource -> type' -> m ()
-isTypeSupported_ self type'
-  = liftIO (void (js_isTypeSupported self (toJSString type')))
+isTypeSupported_ :: (MonadIO m, ToJSString type') => type' -> m ()
+isTypeSupported_ type'
+  = liftIO (void (js_isTypeSupported (toJSString type')))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"setLiveSeekableRange\"]($2,\n$3)" js_setLiveSeekableRange ::
         MediaSource -> Double -> Double -> IO ()
 
@@ -102,7 +100,7 @@
 setLiveSeekableRange self start end
   = liftIO (js_setLiveSeekableRange self start end)
  
-foreign import javascript unsafe "$1[\"clearLiveSeekableRange\"]()"
+foreign import javascript safe "$1[\"clearLiveSeekableRange\"]()"
         js_clearLiveSeekableRange :: MediaSource -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.clearLiveSeekableRange Mozilla MediaSource.clearLiveSeekableRange documentation> 
@@ -127,7 +125,7 @@
 getActiveSourceBuffers self
   = liftIO (js_getActiveSourceBuffers self)
  
-foreign import javascript unsafe "$1[\"duration\"] = $2;"
+foreign import javascript safe "$1[\"duration\"] = $2;"
         js_setDuration :: MediaSource -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.duration Mozilla MediaSource.duration documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStream.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStream.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaStream.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStream.hs
@@ -30,7 +30,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioDestinationNode.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioDestinationNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioDestinationNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioDestinationNode.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"stream\"]" js_getStream ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioSourceNode.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioSourceNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioSourceNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioSourceNode.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"mediaStream\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrack.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrack.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrack.hs
@@ -30,7 +30,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"clone\"]()" js_clone ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MessageChannel.hs b/src/GHCJS/DOM/JSFFI/Generated/MessageChannel.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MessageChannel.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MessageChannel.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"MessageChannel\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MessageEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MessageEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MessageEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MessageEvent.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MessagePort.hs b/src/GHCJS/DOM/JSFFI/Generated/MessagePort.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MessagePort.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MessagePort.hs
@@ -23,10 +23,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"postMessage\"]($2, $3)"
+foreign import javascript safe "$1[\"postMessage\"]($2, $3)"
         js_postMessage :: MessagePort -> JSVal -> JSVal -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.postMessage Mozilla MessagePort.postMessage documentation> 
@@ -56,4 +56,4 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.onmessage Mozilla MessagePort.onmessage documentation> 
 message :: EventName MessagePort MessageEvent
-message = unsafeEventName (toJSString "message")
+message = unsafeEventNameAsync (toJSString "message")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MimeType.hs b/src/GHCJS/DOM/JSFFI/Generated/MimeType.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MimeType.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MimeType.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"type\"]" js_getType ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MimeTypeArray.hs b/src/GHCJS/DOM/JSFFI/Generated/MimeTypeArray.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MimeTypeArray.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MimeTypeArray.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MutationEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MutationEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MutationEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MutationEvent.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MutationObserver.hs b/src/GHCJS/DOM/JSFFI/Generated/MutationObserver.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MutationObserver.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MutationObserver.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
@@ -38,8 +38,8 @@
 newMutationObserver callback
   = liftIO (js_newMutationObserver (toMutationCallback callback))
  
-foreign import javascript unsafe "$1[\"observe\"]($2, $3)"
-        js_observe ::
+foreign import javascript safe "$1[\"observe\"]($2, $3)" js_observe
+        ::
         MutationObserver -> Node -> Optional MutationObserverInit -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver.observe Mozilla MutationObserver.observe documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MutationRecord.hs b/src/GHCJS/DOM/JSFFI/Generated/MutationRecord.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/MutationRecord.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/MutationRecord.hs
@@ -32,7 +32,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"type\"]" js_getType ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NamedNodeMap.hs b/src/GHCJS/DOM/JSFFI/Generated/NamedNodeMap.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NamedNodeMap.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NamedNodeMap.hs
@@ -31,7 +31,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
@@ -142,7 +142,7 @@
          (js_getNamedItemNS self (toOptionalJSString namespaceURI)
             (toJSString localName)))
  
-foreign import javascript unsafe "$1[\"setNamedItem\"]($2)"
+foreign import javascript safe "$1[\"setNamedItem\"]($2)"
         js_setNamedItem :: NamedNodeMap -> Attr -> IO (Nullable Attr)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItem Mozilla NamedNodeMap.setNamedItem documentation> 
@@ -170,7 +170,7 @@
   = liftIO
       (fromJust . nullableToMaybe <$> (js_setNamedItem self attr))
  
-foreign import javascript unsafe "$1[\"setNamedItemNS\"]($2)"
+foreign import javascript safe "$1[\"setNamedItemNS\"]($2)"
         js_setNamedItemNS :: NamedNodeMap -> Attr -> IO (Nullable Attr)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItemNS Mozilla NamedNodeMap.setNamedItemNS documentation> 
@@ -199,7 +199,7 @@
   = liftIO
       (fromJust . nullableToMaybe <$> (js_setNamedItemNS self attr))
  
-foreign import javascript unsafe "$1[\"removeNamedItem\"]($2)"
+foreign import javascript safe "$1[\"removeNamedItem\"]($2)"
         js_removeNamedItem :: NamedNodeMap -> JSString -> IO Attr
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItem Mozilla NamedNodeMap.removeNamedItem documentation> 
@@ -217,8 +217,8 @@
   = liftIO
       (void (js_removeNamedItem self (toJSString qualifiedName)))
  
-foreign import javascript unsafe
-        "$1[\"removeNamedItemNS\"]($2, $3)" js_removeNamedItemNS ::
+foreign import javascript safe "$1[\"removeNamedItemNS\"]($2, $3)"
+        js_removeNamedItemNS ::
         NamedNodeMap -> Optional JSString -> JSString -> IO Attr
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItemNS Mozilla NamedNodeMap.removeNamedItemNS documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Navigator.hs b/src/GHCJS/DOM/JSFFI/Generated/Navigator.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Navigator.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Navigator.hs
@@ -37,7 +37,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript interruptible
@@ -101,7 +101,7 @@
   = liftIO
       (js_getUserMedia self constraints successCallback errorCallback)
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"registerProtocolHandler\"]($2,\n$3, $4)"
         js_registerProtocolHandler ::
         Navigator -> JSString -> JSString -> JSString -> IO ()
@@ -116,7 +116,7 @@
          (toJSString url)
          (toJSString title))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"isProtocolHandlerRegistered\"]($2,\n$3)"
         js_isProtocolHandlerRegistered ::
         Navigator -> JSString -> JSString -> IO JSString
@@ -142,7 +142,7 @@
          (js_isProtocolHandlerRegistered self (toJSString scheme)
             (toJSString url)))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"unregisterProtocolHandler\"]($2,\n$3)"
         js_unregisterProtocolHandler ::
         Navigator -> JSString -> JSString -> IO ()
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorConcurrentHardware.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorConcurrentHardware.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NavigatorConcurrentHardware.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorConcurrentHardware.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"hardwareConcurrency\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorID.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorID.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NavigatorID.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorID.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"appCodeName\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorLanguage.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorLanguage.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NavigatorLanguage.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorLanguage.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"language\"]" js_getLanguage
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorOnLine.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorOnLine.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NavigatorOnLine.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorOnLine.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "($1[\"onLine\"] ? 1 : 0)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaError.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaError.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaError.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaError.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"constraintName\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaErrorCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaErrorCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaErrorCallback.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaErrorCallback Mozilla NavigatorUserMediaErrorCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaSuccessCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaSuccessCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaSuccessCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaSuccessCallback.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaSuccessCallback Mozilla NavigatorUserMediaSuccessCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Node.hs b/src/GHCJS/DOM/JSFFI/Generated/Node.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Node.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Node.hs
@@ -63,7 +63,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"getRootNode\"]($2)"
@@ -104,8 +104,8 @@
 normalize :: (MonadIO m, IsNode self) => self -> m ()
 normalize self = liftIO (js_normalize (toNode self))
  
-foreign import javascript unsafe "$1[\"cloneNode\"]($2)"
-        js_cloneNode :: Node -> Bool -> IO Node
+foreign import javascript safe "$1[\"cloneNode\"]($2)" js_cloneNode
+        :: Node -> Bool -> IO Node
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode Mozilla Node.cloneNode documentation> 
 cloneNode :: (MonadIO m, IsNode self) => self -> Bool -> m Node
@@ -306,7 +306,7 @@
          (js_isDefaultNamespace (toNode self)
             (toOptionalJSString namespaceURI)))
  
-foreign import javascript unsafe "$1[\"insertBefore\"]($2, $3)"
+foreign import javascript safe "$1[\"insertBefore\"]($2, $3)"
         js_insertBefore :: Node -> Node -> Optional Node -> IO Node
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.insertBefore Mozilla Node.insertBefore documentation> 
@@ -328,7 +328,7 @@
          (js_insertBefore (toNode self) (toNode node)
             (maybeToOptional (fmap toNode child))))
  
-foreign import javascript unsafe "$1[\"appendChild\"]($2)"
+foreign import javascript safe "$1[\"appendChild\"]($2)"
         js_appendChild :: Node -> Node -> IO Node
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.appendChild Mozilla Node.appendChild documentation> 
@@ -343,7 +343,7 @@
 appendChild_ self node
   = liftIO (void (js_appendChild (toNode self) (toNode node)))
  
-foreign import javascript unsafe "$1[\"replaceChild\"]($2, $3)"
+foreign import javascript safe "$1[\"replaceChild\"]($2, $3)"
         js_replaceChild :: Node -> Node -> Node -> IO Node
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.replaceChild Mozilla Node.replaceChild documentation> 
@@ -362,7 +362,7 @@
   = liftIO
       (void (js_replaceChild (toNode self) (toNode node) (toNode child)))
  
-foreign import javascript unsafe "$1[\"removeChild\"]($2)"
+foreign import javascript safe "$1[\"removeChild\"]($2)"
         js_removeChild :: Node -> Node -> IO Node
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.removeChild Mozilla Node.removeChild documentation> 
@@ -602,7 +602,7 @@
   = liftIO
       (fromJust . nullableToMaybe <$> (js_getNextSibling (toNode self)))
  
-foreign import javascript unsafe "$1[\"nodeValue\"] = $2;"
+foreign import javascript safe "$1[\"nodeValue\"] = $2;"
         js_setNodeValue :: Node -> Optional JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
@@ -638,7 +638,7 @@
   = liftIO
       (fromJust . fromMaybeJSString <$> (js_getNodeValue (toNode self)))
  
-foreign import javascript unsafe "$1[\"textContent\"] = $2;"
+foreign import javascript safe "$1[\"textContent\"] = $2;"
         js_setTextContent :: Node -> Optional JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NodeFilter.hs b/src/GHCJS/DOM/JSFFI/Generated/NodeFilter.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NodeFilter.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NodeFilter.hs
@@ -29,7 +29,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter Mozilla NodeFilter documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NodeIterator.hs b/src/GHCJS/DOM/JSFFI/Generated/NodeIterator.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NodeIterator.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NodeIterator.hs
@@ -28,7 +28,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"nextNode\"]()" js_nextNode
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NodeList.hs b/src/GHCJS/DOM/JSFFI/Generated/NodeList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NodeList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NodeList.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NonDocumentTypeChildNode.hs b/src/GHCJS/DOM/JSFFI/Generated/NonDocumentTypeChildNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NonDocumentTypeChildNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NonDocumentTypeChildNode.hs
@@ -28,7 +28,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"previousElementSibling\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NonElementParentNode.hs b/src/GHCJS/DOM/JSFFI/Generated/NonElementParentNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NonElementParentNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NonElementParentNode.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"getElementById\"]($2)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Notification.hs b/src/GHCJS/DOM/JSFFI/Generated/Notification.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Notification.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Notification.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
@@ -55,18 +55,17 @@
 close :: (MonadIO m) => Notification -> m ()
 close self = liftIO (js_close self)
  
-foreign import javascript unsafe "$1[\"requestPermission\"]($2)"
+foreign import javascript unsafe
+        "window[\"Notification\"][\"requestPermission\"]($1)"
         js_requestPermission ::
-        Notification ->
-          Optional (NotificationPermissionCallback callback) -> IO ()
+        Optional (NotificationPermissionCallback callback) -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.requestPermission Mozilla Notification.requestPermission documentation> 
 requestPermission ::
                   (MonadIO m, ToJSString callback) =>
-                    Notification ->
-                      Maybe (NotificationPermissionCallback callback) -> m ()
-requestPermission self callback
-  = liftIO (js_requestPermission self (maybeToOptional callback))
+                    Maybe (NotificationPermissionCallback callback) -> m ()
+requestPermission callback
+  = liftIO (js_requestPermission (maybeToOptional callback))
  
 foreign import javascript unsafe "$1[\"permission\"]"
         js_getPermission :: Notification -> IO JSString
@@ -83,11 +82,11 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onerror Mozilla Notification.onerror documentation> 
 error :: EventName Notification UIEvent
-error = unsafeEventName (toJSString "error")
+error = unsafeEventNameAsync (toJSString "error")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onclose Mozilla Notification.onclose documentation> 
 cLoseEvent :: EventName Notification CloseEvent
-cLoseEvent = unsafeEventName (toJSString "close")
+cLoseEvent = unsafeEventNameAsync (toJSString "close")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.ondisplay Mozilla Notification.ondisplay documentation> 
 display :: EventName Notification ondisplay
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NotificationPermissionCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/NotificationPermissionCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/NotificationPermissionCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/NotificationPermissionCallback.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationPermissionCallback Mozilla NotificationPermissionCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OESStandardDerivatives.hs b/src/GHCJS/DOM/JSFFI/Generated/OESStandardDerivatives.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/OESStandardDerivatives.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/OESStandardDerivatives.hs
@@ -23,6 +23,6 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 35723
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OESTextureHalfFloat.hs b/src/GHCJS/DOM/JSFFI/Generated/OESTextureHalfFloat.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/OESTextureHalfFloat.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/OESTextureHalfFloat.hs
@@ -23,6 +23,6 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern HALF_FLOAT_OES = 36193
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OESVertexArrayObject.hs b/src/GHCJS/DOM/JSFFI/Generated/OESVertexArrayObject.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/OESVertexArrayObject.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/OESVertexArrayObject.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"createVertexArrayOES\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioCompletionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioCompletionEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioCompletionEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioCompletionEvent.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"renderedBuffer\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioContext.hs b/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioContext.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioContext.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioContext.hs
@@ -23,10 +23,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe
+foreign import javascript safe
         "new window[\"OfflineAudioContext\"]($1,\n$2, $3)"
         js_newOfflineAudioContext ::
         Word -> Word -> Float -> IO OfflineAudioContext
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OscillatorNode.hs b/src/GHCJS/DOM/JSFFI/Generated/OscillatorNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/OscillatorNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/OscillatorNode.hs
@@ -28,17 +28,17 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"start\"]($2)" js_start ::
+foreign import javascript safe "$1[\"start\"]($2)" js_start ::
         OscillatorNode -> Optional Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.start Mozilla OscillatorNode.start documentation> 
 start :: (MonadIO m) => OscillatorNode -> Maybe Double -> m ()
 start self when = liftIO (js_start self (maybeToOptional when))
  
-foreign import javascript unsafe "$1[\"stop\"]($2)" js_stop ::
+foreign import javascript safe "$1[\"stop\"]($2)" js_stop ::
         OscillatorNode -> Optional Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.stop Mozilla OscillatorNode.stop documentation> 
@@ -59,7 +59,7 @@
 pattern PLAYING_STATE = 2
 pattern FINISHED_STATE = 3
  
-foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+foreign import javascript safe "$1[\"type\"] = $2;" js_setType ::
         OscillatorNode -> JSVal -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.type Mozilla OscillatorNode.type documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedError.hs b/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedError.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedError.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedError.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedErrorEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedErrorEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedErrorEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedErrorEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OverflowEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/OverflowEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/OverflowEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/OverflowEvent.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PageTransitionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/PageTransitionEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PageTransitionEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PageTransitionEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PannerNode.hs b/src/GHCJS/DOM/JSFFI/Generated/PannerNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PannerNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PannerNode.hs
@@ -34,7 +34,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"setPosition\"]($2, $3, $4)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ParentNode.hs b/src/GHCJS/DOM/JSFFI/Generated/ParentNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ParentNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ParentNode.hs
@@ -31,11 +31,11 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"prepend\"]($2)" js_prepend
-        :: ParentNode -> JSVal -> IO ()
+foreign import javascript safe "$1[\"prepend\"]($2)" js_prepend ::
+        ParentNode -> JSVal -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.prepend Mozilla ParentNode.prepend documentation> 
 prepend ::
@@ -46,7 +46,7 @@
       (toJSVal nodes >>=
          \ nodes' -> js_prepend (toParentNode self) nodes')
  
-foreign import javascript unsafe "$1[\"append\"]($2)" js_append ::
+foreign import javascript safe "$1[\"append\"]($2)" js_append ::
         ParentNode -> JSVal -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.append Mozilla ParentNode.append documentation> 
@@ -58,7 +58,7 @@
       (toJSVal nodes >>=
          \ nodes' -> js_append (toParentNode self) nodes')
  
-foreign import javascript unsafe "$1[\"querySelector\"]($2)"
+foreign import javascript safe "$1[\"querySelector\"]($2)"
         js_querySelector :: ParentNode -> JSString -> IO (Nullable Element)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelector Mozilla ParentNode.querySelector documentation> 
@@ -99,7 +99,7 @@
       (fromJust . nullableToMaybe <$>
          (js_querySelector (toParentNode self) (toJSString selectors)))
  
-foreign import javascript unsafe "$1[\"querySelectorAll\"]($2)"
+foreign import javascript safe "$1[\"querySelectorAll\"]($2)"
         js_querySelectorAll :: ParentNode -> JSString -> IO NodeList
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelectorAll Mozilla ParentNode.querySelectorAll documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PasswordCredential.hs b/src/GHCJS/DOM/JSFFI/Generated/PasswordCredential.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PasswordCredential.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PasswordCredential.hs
@@ -29,7 +29,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Path2D.hs b/src/GHCJS/DOM/JSFFI/Generated/Path2D.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Path2D.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Path2D.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"Path2D\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Performance.hs b/src/GHCJS/DOM/JSFFI/Generated/Performance.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Performance.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Performance.hs
@@ -30,7 +30,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"now\"]()" js_now ::
@@ -116,7 +116,7 @@
 setResourceTimingBufferSize self maxSize
   = liftIO (js_setResourceTimingBufferSize self maxSize)
  
-foreign import javascript unsafe "$1[\"mark\"]($2)" js_mark ::
+foreign import javascript safe "$1[\"mark\"]($2)" js_mark ::
         Performance -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.mark Mozilla Performance.mark documentation> 
@@ -134,7 +134,7 @@
 clearMarks self markName
   = liftIO (js_clearMarks self (toOptionalJSString markName))
  
-foreign import javascript unsafe "$1[\"measure\"]($2, $3, $4)"
+foreign import javascript safe "$1[\"measure\"]($2, $3, $4)"
         js_measure ::
         Performance ->
           JSString -> Optional JSString -> Optional JSString -> IO ()
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceEntry.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceEntry.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PerformanceEntry.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceEntry.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"name\"]" js_getName ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceNavigation.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceNavigation.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PerformanceNavigation.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceNavigation.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern TYPE_NAVIGATE = 0
 pattern TYPE_RELOAD = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserver.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserver.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserver.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserver.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
@@ -37,8 +37,8 @@
 newPerformanceObserver callback
   = liftIO (js_newPerformanceObserver callback)
  
-foreign import javascript unsafe "$1[\"observe\"]($2)" js_observe
-        :: PerformanceObserver -> PerformanceObserverInit -> IO ()
+foreign import javascript safe "$1[\"observe\"]($2)" js_observe ::
+        PerformanceObserver -> PerformanceObserverInit -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver.observe Mozilla PerformanceObserver.observe documentation> 
 observe ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverCallback.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverCallback Mozilla PerformanceObserverCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverEntryList.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverEntryList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverEntryList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverEntryList.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"getEntries\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceResourceTiming.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceResourceTiming.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PerformanceResourceTiming.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceResourceTiming.hs
@@ -32,7 +32,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"initiatorType\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceTiming.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceTiming.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PerformanceTiming.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceTiming.hs
@@ -37,7 +37,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"navigationStart\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Plugin.hs b/src/GHCJS/DOM/JSFFI/Generated/Plugin.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Plugin.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Plugin.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PluginArray.hs b/src/GHCJS/DOM/JSFFI/Generated/PluginArray.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PluginArray.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PluginArray.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PopStateEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/PopStateEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PopStateEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PopStateEvent.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PositionCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/PositionCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PositionCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PositionCallback.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionCallback Mozilla PositionCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PositionError.hs b/src/GHCJS/DOM/JSFFI/Generated/PositionError.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PositionError.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PositionError.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern PERMISSION_DENIED = 1
 pattern POSITION_UNAVAILABLE = 2
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PositionErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/PositionErrorCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PositionErrorCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PositionErrorCallback.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionErrorCallback Mozilla PositionErrorCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ProcessingInstruction.hs b/src/GHCJS/DOM/JSFFI/Generated/ProcessingInstruction.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ProcessingInstruction.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ProcessingInstruction.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"target\"]" js_getTarget ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ProgressEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ProgressEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ProgressEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ProgressEvent.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PromiseRejectionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/PromiseRejectionEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/PromiseRejectionEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/PromiseRejectionEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/QuickTimePluginReplacement.hs b/src/GHCJS/DOM/JSFFI/Generated/QuickTimePluginReplacement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/QuickTimePluginReplacement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/QuickTimePluginReplacement.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"postEvent\"]($2)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RGBColor.hs b/src/GHCJS/DOM/JSFFI/Generated/RGBColor.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RGBColor.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RGBColor.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"red\"]" js_getRed ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFSender.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFSender.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFSender.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFSender.hs
@@ -25,10 +25,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"insertDTMF\"]($2, $3, $4)"
+foreign import javascript safe "$1[\"insertDTMF\"]($2, $3, $4)"
         js_insertDTMF ::
         RTCDTMFSender -> JSString -> Optional Int -> Optional Int -> IO ()
 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFToneChangeEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFToneChangeEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFToneChangeEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFToneChangeEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannel.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannel.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannel.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannel.hs
@@ -36,10 +36,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"send\"]($2)" js_send ::
+foreign import javascript safe "$1[\"send\"]($2)" js_send ::
         RTCDataChannel -> ArrayBuffer -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
@@ -47,7 +47,7 @@
      (MonadIO m, IsArrayBuffer data') => RTCDataChannel -> data' -> m ()
 send self data' = liftIO (js_send self (toArrayBuffer data'))
  
-foreign import javascript unsafe "$1[\"send\"]($2)" js_sendView ::
+foreign import javascript safe "$1[\"send\"]($2)" js_sendView ::
         RTCDataChannel -> ArrayBufferView -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
@@ -57,7 +57,7 @@
 sendView self data'
   = liftIO (js_sendView self (toArrayBufferView data'))
  
-foreign import javascript unsafe "$1[\"send\"]($2)" js_sendBlob ::
+foreign import javascript safe "$1[\"send\"]($2)" js_sendBlob ::
         RTCDataChannel -> Blob -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
@@ -65,8 +65,8 @@
          (MonadIO m, IsBlob data') => RTCDataChannel -> data' -> m ()
 sendBlob self data' = liftIO (js_sendBlob self (toBlob data'))
  
-foreign import javascript unsafe "$1[\"send\"]($2)" js_sendString
-        :: RTCDataChannel -> JSString -> IO ()
+foreign import javascript safe "$1[\"send\"]($2)" js_sendString ::
+        RTCDataChannel -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
 sendString ::
@@ -215,7 +215,7 @@
 getBufferedAmountLowThreshold self
   = liftIO (js_getBufferedAmountLowThreshold self)
  
-foreign import javascript unsafe "$1[\"binaryType\"] = $2;"
+foreign import javascript safe "$1[\"binaryType\"] = $2;"
         js_setBinaryType :: RTCDataChannel -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.binaryType Mozilla RTCDataChannel.binaryType documentation> 
@@ -235,19 +235,19 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onopen Mozilla RTCDataChannel.onopen documentation> 
 open :: EventName RTCDataChannel Event
-open = unsafeEventName (toJSString "open")
+open = unsafeEventNameAsync (toJSString "open")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onerror Mozilla RTCDataChannel.onerror documentation> 
 error :: EventName RTCDataChannel UIEvent
-error = unsafeEventName (toJSString "error")
+error = unsafeEventNameAsync (toJSString "error")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onclose Mozilla RTCDataChannel.onclose documentation> 
 closeEvent :: EventName RTCDataChannel CloseEvent
-closeEvent = unsafeEventName (toJSString "close")
+closeEvent = unsafeEventNameAsync (toJSString "close")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onmessage Mozilla RTCDataChannel.onmessage documentation> 
 message :: EventName RTCDataChannel MessageEvent
-message = unsafeEventName (toJSString "message")
+message = unsafeEventNameAsync (toJSString "message")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onbufferedamountlow Mozilla RTCDataChannel.onbufferedamountlow documentation> 
 bufferedamountlow :: EventName RTCDataChannel onbufferedamountlow
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannelEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannelEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannelEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannelEvent.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidate.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidate.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidate.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidate.hs
@@ -26,10 +26,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe
+foreign import javascript safe
         "new window[\"RTCIceCandidate\"]($1)" js_newRTCIceCandidate ::
         RTCIceCandidateInit -> IO RTCIceCandidate
 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidateEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidateEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidateEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidateEvent.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"candidate\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCIceTransport.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCIceTransport.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCIceTransport.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCIceTransport.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"state\"]" js_getState ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnection.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnection.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnection.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnection.hs
@@ -56,7 +56,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript interruptible
@@ -161,7 +161,7 @@
 getConfiguration_ :: (MonadIO m) => RTCPeerConnection -> m ()
 getConfiguration_ self = liftIO (void (js_getConfiguration self))
  
-foreign import javascript unsafe "$1[\"setConfiguration\"]($2)"
+foreign import javascript safe "$1[\"setConfiguration\"]($2)"
         js_setConfiguration ::
         RTCPeerConnection -> RTCConfiguration -> IO ()
 
@@ -216,7 +216,7 @@
 getTransceivers_ :: (MonadIO m) => RTCPeerConnection -> m ()
 getTransceivers_ self = liftIO (void (js_getTransceivers self))
  
-foreign import javascript unsafe "$1[\"addTrack\"]($2, $3)"
+foreign import javascript safe "$1[\"addTrack\"]($2, $3)"
         js_addTrack ::
         RTCPeerConnection -> MediaStreamTrack -> JSVal -> IO RTCRtpSender
 
@@ -240,7 +240,7 @@
             \ streams' ->
               js_addTrack self (toMediaStreamTrack track) streams'))
  
-foreign import javascript unsafe "$1[\"removeTrack\"]($2)"
+foreign import javascript safe "$1[\"removeTrack\"]($2)"
         js_removeTrack :: RTCPeerConnection -> RTCRtpSender -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.removeTrack Mozilla webkitRTCPeerConnection.removeTrack documentation> 
@@ -248,7 +248,7 @@
             (MonadIO m) => RTCPeerConnection -> RTCRtpSender -> m ()
 removeTrack self sender = liftIO (js_removeTrack self sender)
  
-foreign import javascript unsafe "$1[\"addTransceiver\"]($2, $3)"
+foreign import javascript safe "$1[\"addTransceiver\"]($2, $3)"
         js_addTransceiverTrack ::
         RTCPeerConnection ->
           MediaStreamTrackOrKind ->
@@ -278,8 +278,8 @@
               js_addTransceiverTrack self (MediaStreamTrackOrKind track')
             (maybeToOptional init)))
  
-foreign import javascript unsafe
-        "$1[\"createDataChannel\"]($2, $3)" js_createDataChannel ::
+foreign import javascript safe "$1[\"createDataChannel\"]($2, $3)"
+        js_createDataChannel ::
         RTCPeerConnection ->
           JSString -> Optional RTCDataChannelInit -> IO RTCDataChannel
 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"candidate\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpReceiver.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpReceiver.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpReceiver.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpReceiver.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"getParameters\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSender.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSender.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSender.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSender.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"getParameters\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpTransceiver.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpTransceiver.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpTransceiver.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpTransceiver.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"setDirection\"]($2)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescription.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescription.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescription.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescription.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCTrackEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCTrackEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RTCTrackEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCTrackEvent.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RadioNodeList.hs b/src/GHCJS/DOM/JSFFI/Generated/RadioNodeList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RadioNodeList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RadioNodeList.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_get ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Range.hs b/src/GHCJS/DOM/JSFFI/Generated/Range.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Range.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Range.hs
@@ -48,7 +48,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"Range\"]()"
@@ -58,7 +58,7 @@
 newRange :: (MonadIO m) => m Range
 newRange = liftIO (js_newRange)
  
-foreign import javascript unsafe "$1[\"setStart\"]($2, $3)"
+foreign import javascript safe "$1[\"setStart\"]($2, $3)"
         js_setStart :: Range -> Node -> Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setStart Mozilla Range.setStart documentation> 
@@ -67,7 +67,7 @@
 setStart self node offset
   = liftIO (js_setStart self (toNode node) offset)
  
-foreign import javascript unsafe "$1[\"setEnd\"]($2, $3)" js_setEnd
+foreign import javascript safe "$1[\"setEnd\"]($2, $3)" js_setEnd
         :: Range -> Node -> Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setEnd Mozilla Range.setEnd documentation> 
@@ -75,7 +75,7 @@
 setEnd self node offset
   = liftIO (js_setEnd self (toNode node) offset)
  
-foreign import javascript unsafe "$1[\"setStartBefore\"]($2)"
+foreign import javascript safe "$1[\"setStartBefore\"]($2)"
         js_setStartBefore :: Range -> Node -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setStartBefore Mozilla Range.setStartBefore documentation> 
@@ -83,7 +83,7 @@
 setStartBefore self node
   = liftIO (js_setStartBefore self (toNode node))
  
-foreign import javascript unsafe "$1[\"setStartAfter\"]($2)"
+foreign import javascript safe "$1[\"setStartAfter\"]($2)"
         js_setStartAfter :: Range -> Node -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setStartAfter Mozilla Range.setStartAfter documentation> 
@@ -91,7 +91,7 @@
 setStartAfter self node
   = liftIO (js_setStartAfter self (toNode node))
  
-foreign import javascript unsafe "$1[\"setEndBefore\"]($2)"
+foreign import javascript safe "$1[\"setEndBefore\"]($2)"
         js_setEndBefore :: Range -> Node -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setEndBefore Mozilla Range.setEndBefore documentation> 
@@ -99,7 +99,7 @@
 setEndBefore self node
   = liftIO (js_setEndBefore self (toNode node))
  
-foreign import javascript unsafe "$1[\"setEndAfter\"]($2)"
+foreign import javascript safe "$1[\"setEndAfter\"]($2)"
         js_setEndAfter :: Range -> Node -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setEndAfter Mozilla Range.setEndAfter documentation> 
@@ -113,14 +113,14 @@
 collapse :: (MonadIO m) => Range -> Bool -> m ()
 collapse self toStart = liftIO (js_collapse self toStart)
  
-foreign import javascript unsafe "$1[\"selectNode\"]($2)"
+foreign import javascript safe "$1[\"selectNode\"]($2)"
         js_selectNode :: Range -> Node -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.selectNode Mozilla Range.selectNode documentation> 
 selectNode :: (MonadIO m, IsNode node) => Range -> node -> m ()
 selectNode self node = liftIO (js_selectNode self (toNode node))
  
-foreign import javascript unsafe "$1[\"selectNodeContents\"]($2)"
+foreign import javascript safe "$1[\"selectNodeContents\"]($2)"
         js_selectNodeContents :: Range -> Node -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.selectNodeContents Mozilla Range.selectNodeContents documentation> 
@@ -129,7 +129,7 @@
 selectNodeContents self node
   = liftIO (js_selectNodeContents self (toNode node))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"compareBoundaryPoints\"]($2,\n$3)" js_compareBoundaryPoints
         :: Range -> Word -> Range -> IO Int
 
@@ -145,14 +145,14 @@
 compareBoundaryPoints_ self how sourceRange
   = liftIO (void (js_compareBoundaryPoints self how sourceRange))
  
-foreign import javascript unsafe "$1[\"deleteContents\"]()"
+foreign import javascript safe "$1[\"deleteContents\"]()"
         js_deleteContents :: Range -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.deleteContents Mozilla Range.deleteContents documentation> 
 deleteContents :: (MonadIO m) => Range -> m ()
 deleteContents self = liftIO (js_deleteContents self)
  
-foreign import javascript unsafe "$1[\"extractContents\"]()"
+foreign import javascript safe "$1[\"extractContents\"]()"
         js_extractContents :: Range -> IO DocumentFragment
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.extractContents Mozilla Range.extractContents documentation> 
@@ -163,7 +163,7 @@
 extractContents_ :: (MonadIO m) => Range -> m ()
 extractContents_ self = liftIO (void (js_extractContents self))
  
-foreign import javascript unsafe "$1[\"cloneContents\"]()"
+foreign import javascript safe "$1[\"cloneContents\"]()"
         js_cloneContents :: Range -> IO DocumentFragment
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneContents Mozilla Range.cloneContents documentation> 
@@ -174,14 +174,14 @@
 cloneContents_ :: (MonadIO m) => Range -> m ()
 cloneContents_ self = liftIO (void (js_cloneContents self))
  
-foreign import javascript unsafe "$1[\"insertNode\"]($2)"
+foreign import javascript safe "$1[\"insertNode\"]($2)"
         js_insertNode :: Range -> Node -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.insertNode Mozilla Range.insertNode documentation> 
 insertNode :: (MonadIO m, IsNode node) => Range -> node -> m ()
 insertNode self node = liftIO (js_insertNode self (toNode node))
  
-foreign import javascript unsafe "$1[\"surroundContents\"]($2)"
+foreign import javascript safe "$1[\"surroundContents\"]($2)"
         js_surroundContents :: Range -> Node -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.surroundContents Mozilla Range.surroundContents documentation> 
@@ -208,7 +208,7 @@
 detach :: (MonadIO m) => Range -> m ()
 detach self = liftIO (js_detach self)
  
-foreign import javascript unsafe
+foreign import javascript safe
         "($1[\"isPointInRange\"]($2,\n$3) ? 1 : 0)" js_isPointInRange ::
         Range -> Node -> Word -> IO Bool
 
@@ -224,7 +224,7 @@
 isPointInRange_ self node offset
   = liftIO (void (js_isPointInRange self (toNode node) offset))
  
-foreign import javascript unsafe "$1[\"comparePoint\"]($2, $3)"
+foreign import javascript safe "$1[\"comparePoint\"]($2, $3)"
         js_comparePoint :: Range -> Node -> Word -> IO Int
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.comparePoint Mozilla Range.comparePoint documentation> 
@@ -239,7 +239,7 @@
 comparePoint_ self node offset
   = liftIO (void (js_comparePoint self (toNode node) offset))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "($1[\"intersectsNode\"]($2) ? 1 : 0)" js_intersectsNode ::
         Range -> Node -> IO Bool
 
@@ -290,7 +290,7 @@
 getBoundingClientRect_ self
   = liftIO (void (js_getBoundingClientRect self))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"createContextualFragment\"]($2)" js_createContextualFragment
         :: Range -> JSString -> IO DocumentFragment
 
@@ -308,7 +308,7 @@
   = liftIO
       (void (js_createContextualFragment self (toJSString fragment)))
  
-foreign import javascript unsafe "$1[\"expand\"]($2)" js_expand ::
+foreign import javascript safe "$1[\"expand\"]($2)" js_expand ::
         Range -> Optional JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.expand Mozilla Range.expand documentation> 
@@ -317,7 +317,7 @@
 expand self unit
   = liftIO (js_expand self (toOptionalJSString unit))
  
-foreign import javascript unsafe "$1[\"compareNode\"]($2)"
+foreign import javascript safe "$1[\"compareNode\"]($2)"
         js_compareNode :: Range -> Node -> IO Int
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.compareNode Mozilla Range.compareNode documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableByteStreamController.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableByteStreamController.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ReadableByteStreamController.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableByteStreamController.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStream.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStream.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ReadableStream.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStream.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBReader.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBReader.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBReader.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBReader.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBRequest.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBRequest.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBRequest.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBRequest.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultController.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultController.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultController.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultController.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultReader.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultReader.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultReader.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultReader.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamSource.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamSource.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamSource.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamSource.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript interruptible
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Rect.hs b/src/GHCJS/DOM/JSFFI/Generated/Rect.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Rect.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Rect.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"top\"]" js_getTop ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Request.hs b/src/GHCJS/DOM/JSFFI/Generated/Request.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Request.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Request.hs
@@ -28,7 +28,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"Request\"]($1, $2)"
@@ -43,7 +43,7 @@
       (toJSVal input >>= \ input' -> js_newRequest input'
          (maybeToOptional init))
  
-foreign import javascript unsafe "$1[\"clone\"]()" js_clone ::
+foreign import javascript safe "$1[\"clone\"]()" js_clone ::
         Request -> IO Request
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.clone Mozilla Request.clone documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RequestAnimationFrameCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/RequestAnimationFrameCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/RequestAnimationFrameCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/RequestAnimationFrameCallback.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RequestAnimationFrameCallback Mozilla RequestAnimationFrameCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Response.hs b/src/GHCJS/DOM/JSFFI/Generated/Response.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Response.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Response.hs
@@ -30,38 +30,36 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"error\"]()" js_error ::
-        Response -> IO Response
+foreign import javascript unsafe
+        "window[\"Response\"][\"error\"]()" js_error :: IO Response
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.error Mozilla Response.error documentation> 
-error :: (MonadIO m) => Response -> m Response
-error self = liftIO (js_error self)
+error :: (MonadIO m) => m Response
+error = liftIO (js_error)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.error Mozilla Response.error documentation> 
-error_ :: (MonadIO m) => Response -> m ()
-error_ self = liftIO (void (js_error self))
+error_ :: (MonadIO m) => m ()
+error_ = liftIO (void (js_error))
  
-foreign import javascript unsafe "$1[\"redirect\"]($2, $3)"
-        js_redirect :: Response -> JSString -> Optional Word -> IO Response
+foreign import javascript safe
+        "window[\"Response\"][\"redirect\"]($1,\n$2)" js_redirect ::
+        JSString -> Optional Word -> IO Response
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.redirect Mozilla Response.redirect documentation> 
 redirect ::
-         (MonadIO m, ToJSString url) =>
-           Response -> url -> Maybe Word -> m Response
-redirect self url status
-  = liftIO
-      (js_redirect self (toJSString url) (maybeToOptional status))
+         (MonadIO m, ToJSString url) => url -> Maybe Word -> m Response
+redirect url status
+  = liftIO (js_redirect (toJSString url) (maybeToOptional status))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.redirect Mozilla Response.redirect documentation> 
 redirect_ ::
-          (MonadIO m, ToJSString url) =>
-            Response -> url -> Maybe Word -> m ()
-redirect_ self url status
+          (MonadIO m, ToJSString url) => url -> Maybe Word -> m ()
+redirect_ url status
   = liftIO
-      (void (js_redirect self (toJSString url) (maybeToOptional status)))
+      (void (js_redirect (toJSString url) (maybeToOptional status)))
  
 foreign import javascript interruptible
         "$1[\"arrayBuffer\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);});"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLError.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLError.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SQLError.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SQLError.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern UNKNOWN_ERR = 0
 pattern DATABASE_ERR = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLException.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLException.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SQLException.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SQLException.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern UNKNOWN_ERR = 0
 pattern DATABASE_ERR = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLResultSet.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLResultSet.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SQLResultSet.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SQLResultSet.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"rows\"]" js_getRows ::
@@ -34,8 +34,8 @@
 getRows :: (MonadIO m) => SQLResultSet -> m SQLResultSetRowList
 getRows self = liftIO (js_getRows self)
  
-foreign import javascript unsafe "$1[\"insertId\"]" js_getInsertId
-        :: SQLResultSet -> IO Double
+foreign import javascript safe "$1[\"insertId\"]" js_getInsertId ::
+        SQLResultSet -> IO Double
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.insertId Mozilla SQLResultSet.insertId documentation> 
 getInsertId :: (MonadIO m) => SQLResultSet -> m Int64
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLResultSetRowList.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLResultSetRowList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SQLResultSetRowList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SQLResultSetRowList.hs
@@ -23,10 +23,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+foreign import javascript safe "$1[\"item\"]($2)" js_item ::
         SQLResultSetRowList -> Word -> IO (Record DOMString SQLValue)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList.item Mozilla SQLResultSetRowList.item documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLStatementCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLStatementCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SQLStatementCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SQLStatementCallback.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementCallback Mozilla SQLStatementCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLStatementErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLStatementErrorCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SQLStatementErrorCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SQLStatementErrorCallback.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementErrorCallback Mozilla SQLStatementErrorCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLTransaction.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLTransaction.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SQLTransaction.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SQLTransaction.hs
@@ -23,11 +23,11 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe
-        "$1[\"executeSql\"]($2, $3, $4, $5)" js_executeSql ::
+foreign import javascript safe "$1[\"executeSql\"]($2, $3, $4, $5)"
+        js_executeSql ::
         SQLTransaction ->
           JSString ->
             JSVal ->
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionCallback.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionCallback Mozilla SQLTransactionCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionErrorCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionErrorCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionErrorCallback.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAElement.hs
@@ -21,7 +21,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"target\"]" js_getTarget ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAltGlyphElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAltGlyphElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAltGlyphElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAltGlyphElement.hs
@@ -24,10 +24,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"glyphRef\"] = $2;"
+foreign import javascript safe "$1[\"glyphRef\"] = $2;"
         js_setGlyphRef :: SVGAltGlyphElement -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.glyphRef Mozilla SVGAltGlyphElement.glyphRef documentation> 
@@ -44,8 +44,8 @@
             (MonadIO m, FromJSString result) => SVGAltGlyphElement -> m result
 getGlyphRef self = liftIO (fromJSString <$> (js_getGlyphRef self))
  
-foreign import javascript unsafe "$1[\"format\"] = $2;"
-        js_setFormat :: SVGAltGlyphElement -> JSString -> IO ()
+foreign import javascript safe "$1[\"format\"] = $2;" js_setFormat
+        :: SVGAltGlyphElement -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.format Mozilla SVGAltGlyphElement.format documentation> 
 setFormat ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAngle.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAngle.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAngle.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAngle.hs
@@ -31,10 +31,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"newValueSpecifiedUnits\"]($2,\n$3)" js_newValueSpecifiedUnits
         :: SVGAngle -> Word -> Float -> IO ()
 
@@ -45,7 +45,7 @@
   = liftIO
       (js_newValueSpecifiedUnits self unitType valueInSpecifiedUnits)
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"convertToSpecifiedUnits\"]($2)" js_convertToSpecifiedUnits ::
         SVGAngle -> Word -> IO ()
 
@@ -66,8 +66,8 @@
 getUnitType :: (MonadIO m) => SVGAngle -> m Word
 getUnitType self = liftIO (js_getUnitType self)
  
-foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
-        :: SVGAngle -> Float -> IO ()
+foreign import javascript safe "$1[\"value\"] = $2;" js_setValue ::
+        SVGAngle -> Float -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.value Mozilla SVGAngle.value documentation> 
 setValue :: (MonadIO m) => SVGAngle -> Float -> m ()
@@ -80,7 +80,7 @@
 getValue :: (MonadIO m) => SVGAngle -> m Float
 getValue self = liftIO (js_getValue self)
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"valueInSpecifiedUnits\"] = $2;" js_setValueInSpecifiedUnits
         :: SVGAngle -> Float -> IO ()
 
@@ -98,7 +98,7 @@
 getValueInSpecifiedUnits self
   = liftIO (js_getValueInSpecifiedUnits self)
  
-foreign import javascript unsafe "$1[\"valueAsString\"] = $2;"
+foreign import javascript safe "$1[\"valueAsString\"] = $2;"
         js_setValueAsString :: SVGAngle -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueAsString Mozilla SVGAngle.valueAsString documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedAngle.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedAngle.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedAngle.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedAngle.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedBoolean.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedBoolean.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedBoolean.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedBoolean.hs
@@ -24,10 +24,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"baseVal\"] = $2;"
+foreign import javascript safe "$1[\"baseVal\"] = $2;"
         js_setBaseVal :: SVGAnimatedBoolean -> Bool -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean.baseVal Mozilla SVGAnimatedBoolean.baseVal documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedEnumeration.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedEnumeration.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedEnumeration.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedEnumeration.hs
@@ -24,10 +24,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"baseVal\"] = $2;"
+foreign import javascript safe "$1[\"baseVal\"] = $2;"
         js_setBaseVal :: SVGAnimatedEnumeration -> Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration.baseVal Mozilla SVGAnimatedEnumeration.baseVal documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedInteger.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedInteger.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedInteger.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedInteger.hs
@@ -24,10 +24,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"baseVal\"] = $2;"
+foreign import javascript safe "$1[\"baseVal\"] = $2;"
         js_setBaseVal :: SVGAnimatedInteger -> Int -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger.baseVal Mozilla SVGAnimatedInteger.baseVal documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLength.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLength.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLength.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLength.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLengthList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLengthList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLengthList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLengthList.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumber.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumber.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumber.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumber.hs
@@ -24,10 +24,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"baseVal\"] = $2;"
+foreign import javascript safe "$1[\"baseVal\"] = $2;"
         js_setBaseVal :: SVGAnimatedNumber -> Float -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber.baseVal Mozilla SVGAnimatedNumber.baseVal documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumberList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumberList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumberList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumberList.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedPreserveAspectRatio.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedPreserveAspectRatio.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedPreserveAspectRatio.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedPreserveAspectRatio.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedRect.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedRect.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedRect.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedRect.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedString.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedString.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedString.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedString.hs
@@ -24,10 +24,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"baseVal\"] = $2;"
+foreign import javascript safe "$1[\"baseVal\"] = $2;"
         js_setBaseVal :: SVGAnimatedString -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString.baseVal Mozilla SVGAnimatedString.baseVal documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedTransformList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedTransformList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedTransformList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedTransformList.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimationElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimationElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimationElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimationElement.hs
@@ -29,7 +29,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"getStartTime\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGCircleElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGCircleElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGCircleElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGCircleElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"cx\"]" js_getCx ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGClipPathElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGClipPathElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGClipPathElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGClipPathElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"clipPathUnits\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGComponentTransferFunctionElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGComponentTransferFunctionElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGComponentTransferFunctionElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGComponentTransferFunctionElement.hs
@@ -34,7 +34,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0
 pattern SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGCursorElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGCursorElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGCursorElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGCursorElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"]" js_getX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGElement.hs
@@ -30,7 +30,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGEllipseElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGEllipseElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGEllipseElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGEllipseElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"cx\"]" js_getCx ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGException.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGException.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGException.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGException.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"toString\"]()" js_toString
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGExternalResourcesRequired.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGExternalResourcesRequired.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGExternalResourcesRequired.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGExternalResourcesRequired.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEBlendElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEBlendElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEBlendElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEBlendElement.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern SVG_FEBLEND_MODE_UNKNOWN = 0
 pattern SVG_FEBLEND_MODE_NORMAL = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEColorMatrixElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEColorMatrixElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEColorMatrixElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEColorMatrixElement.hs
@@ -28,7 +28,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0
 pattern SVG_FECOLORMATRIX_TYPE_MATRIX = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEComponentTransferElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEComponentTransferElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEComponentTransferElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEComponentTransferElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFECompositeElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFECompositeElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFECompositeElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFECompositeElement.hs
@@ -31,7 +31,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0
 pattern SVG_FECOMPOSITE_OPERATOR_OVER = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEConvolveMatrixElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEConvolveMatrixElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEConvolveMatrixElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEConvolveMatrixElement.hs
@@ -30,7 +30,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern SVG_EDGEMODE_UNKNOWN = 0
 pattern SVG_EDGEMODE_DUPLICATE = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDiffuseLightingElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDiffuseLightingElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDiffuseLightingElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDiffuseLightingElement.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDisplacementMapElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDisplacementMapElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDisplacementMapElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDisplacementMapElement.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern SVG_CHANNEL_UNKNOWN = 0
 pattern SVG_CHANNEL_R = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDistantLightElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDistantLightElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDistantLightElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDistantLightElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"azimuth\"]" js_getAzimuth ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDropShadowElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDropShadowElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDropShadowElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDropShadowElement.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"setStdDeviation\"]($2, $3)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEGaussianBlurElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEGaussianBlurElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEGaussianBlurElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEGaussianBlurElement.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"setStdDeviation\"]($2, $3)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEImageElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEImageElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEImageElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEImageElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"preserveAspectRatio\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEMergeNodeElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEMergeNodeElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEMergeNodeElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEMergeNodeElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEMorphologyElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEMorphologyElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEMorphologyElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEMorphologyElement.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"setRadius\"]($2, $3)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEOffsetElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEOffsetElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEOffsetElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEOffsetElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEPointLightElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEPointLightElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFEPointLightElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEPointLightElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"]" js_getX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFESpecularLightingElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFESpecularLightingElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFESpecularLightingElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFESpecularLightingElement.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFESpotLightElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFESpotLightElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFESpotLightElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFESpotLightElement.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"]" js_getX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFETileElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFETileElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFETileElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFETileElement.hs
@@ -22,7 +22,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFETurbulenceElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFETurbulenceElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFETurbulenceElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFETurbulenceElement.hs
@@ -30,7 +30,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern SVG_TURBULENCE_TYPE_UNKNOWN = 0
 pattern SVG_TURBULENCE_TYPE_FRACTALNOISE = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFilterElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFilterElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFilterElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFilterElement.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"setFilterRes\"]($2, $3)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFilterPrimitiveStandardAttributes.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFilterPrimitiveStandardAttributes.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFilterPrimitiveStandardAttributes.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFilterPrimitiveStandardAttributes.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"]" js_getX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFitToViewBox.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFitToViewBox.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGFitToViewBox.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFitToViewBox.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"viewBox\"]" js_getViewBox ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGForeignObjectElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGForeignObjectElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGForeignObjectElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGForeignObjectElement.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"]" js_getX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGGlyphRefElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGGlyphRefElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGGlyphRefElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGGlyphRefElement.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"glyphRef\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGGradientElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGGradientElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGGradientElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGGradientElement.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern SVG_SPREADMETHOD_UNKNOWN = 0
 pattern SVG_SPREADMETHOD_PAD = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGGraphicsElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGGraphicsElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGGraphicsElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGGraphicsElement.hs
@@ -29,7 +29,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"getBBox\"]()" js_getBBox ::
@@ -73,8 +73,8 @@
 getScreenCTM_ self
   = liftIO (void (js_getScreenCTM (toSVGGraphicsElement self)))
  
-foreign import javascript unsafe
-        "$1[\"getTransformToElement\"]($2)" js_getTransformToElement ::
+foreign import javascript safe "$1[\"getTransformToElement\"]($2)"
+        js_getTransformToElement ::
         SVGGraphicsElement -> Optional SVGElement -> IO SVGMatrix
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getTransformToElement Mozilla SVGGraphicsElement.getTransformToElement documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGImageElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGImageElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGImageElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGImageElement.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"]" js_getX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGLength.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGLength.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGLength.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGLength.hs
@@ -34,10 +34,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"newValueSpecifiedUnits\"]($2,\n$3)" js_newValueSpecifiedUnits
         :: SVGLength -> Word -> Float -> IO ()
 
@@ -48,7 +48,7 @@
   = liftIO
       (js_newValueSpecifiedUnits self unitType valueInSpecifiedUnits)
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"convertToSpecifiedUnits\"]($2)" js_convertToSpecifiedUnits ::
         SVGLength -> Word -> IO ()
 
@@ -75,21 +75,21 @@
 getUnitType :: (MonadIO m) => SVGLength -> m Word
 getUnitType self = liftIO (js_getUnitType self)
  
-foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
-        :: SVGLength -> Float -> IO ()
+foreign import javascript safe "$1[\"value\"] = $2;" js_setValue ::
+        SVGLength -> Float -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.value Mozilla SVGLength.value documentation> 
 setValue :: (MonadIO m) => SVGLength -> Float -> m ()
 setValue self val = liftIO (js_setValue self val)
  
-foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+foreign import javascript safe "$1[\"value\"]" js_getValue ::
         SVGLength -> IO Float
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.value Mozilla SVGLength.value documentation> 
 getValue :: (MonadIO m) => SVGLength -> m Float
 getValue self = liftIO (js_getValue self)
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"valueInSpecifiedUnits\"] = $2;" js_setValueInSpecifiedUnits
         :: SVGLength -> Float -> IO ()
 
@@ -107,7 +107,7 @@
 getValueInSpecifiedUnits self
   = liftIO (js_getValueInSpecifiedUnits self)
  
-foreign import javascript unsafe "$1[\"valueAsString\"] = $2;"
+foreign import javascript safe "$1[\"valueAsString\"] = $2;"
         js_setValueAsString :: SVGLength -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueAsString Mozilla SVGLength.valueAsString documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGLengthList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGLengthList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGLengthList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGLengthList.hs
@@ -27,17 +27,17 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+foreign import javascript safe "$1[\"clear\"]()" js_clear ::
         SVGLengthList -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.clear Mozilla SVGLengthList.clear documentation> 
 clear :: (MonadIO m) => SVGLengthList -> m ()
 clear self = liftIO (js_clear self)
  
-foreign import javascript unsafe "$1[\"initialize\"]($2)"
+foreign import javascript safe "$1[\"initialize\"]($2)"
         js_initialize :: SVGLengthList -> SVGLength -> IO SVGLength
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.initialize Mozilla SVGLengthList.initialize documentation> 
@@ -49,8 +49,8 @@
 initialize_ :: (MonadIO m) => SVGLengthList -> SVGLength -> m ()
 initialize_ self item = liftIO (void (js_initialize self item))
  
-foreign import javascript unsafe "$1[\"getItem\"]($2)" js_getItem
-        :: SVGLengthList -> Word -> IO SVGLength
+foreign import javascript safe "$1[\"getItem\"]($2)" js_getItem ::
+        SVGLengthList -> Word -> IO SVGLength
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.getItem Mozilla SVGLengthList.getItem documentation> 
 getItem :: (MonadIO m) => SVGLengthList -> Word -> m SVGLength
@@ -60,7 +60,7 @@
 getItem_ :: (MonadIO m) => SVGLengthList -> Word -> m ()
 getItem_ self index = liftIO (void (js_getItem self index))
  
-foreign import javascript unsafe "$1[\"insertItemBefore\"]($2, $3)"
+foreign import javascript safe "$1[\"insertItemBefore\"]($2, $3)"
         js_insertItemBefore ::
         SVGLengthList -> SVGLength -> Word -> IO SVGLength
 
@@ -76,7 +76,7 @@
 insertItemBefore_ self item index
   = liftIO (void (js_insertItemBefore self item index))
  
-foreign import javascript unsafe "$1[\"replaceItem\"]($2, $3)"
+foreign import javascript safe "$1[\"replaceItem\"]($2, $3)"
         js_replaceItem ::
         SVGLengthList -> SVGLength -> Word -> IO SVGLength
 
@@ -92,7 +92,7 @@
 replaceItem_ self item index
   = liftIO (void (js_replaceItem self item index))
  
-foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+foreign import javascript safe "$1[\"removeItem\"]($2)"
         js_removeItem :: SVGLengthList -> Word -> IO SVGLength
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.removeItem Mozilla SVGLengthList.removeItem documentation> 
@@ -103,7 +103,7 @@
 removeItem_ :: (MonadIO m) => SVGLengthList -> Word -> m ()
 removeItem_ self index = liftIO (void (js_removeItem self index))
  
-foreign import javascript unsafe "$1[\"appendItem\"]($2)"
+foreign import javascript safe "$1[\"appendItem\"]($2)"
         js_appendItem :: SVGLengthList -> SVGLength -> IO SVGLength
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.appendItem Mozilla SVGLengthList.appendItem documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGLineElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGLineElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGLineElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGLineElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x1\"]" js_getX1 ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGLinearGradientElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGLinearGradientElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGLinearGradientElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGLinearGradientElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x1\"]" js_getX1 ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGMarkerElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGMarkerElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGMarkerElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGMarkerElement.hs
@@ -31,7 +31,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"setOrientToAuto\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGMaskElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGMaskElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGMaskElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGMaskElement.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"maskUnits\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGMatrix.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGMatrix.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGMatrix.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGMatrix.hs
@@ -31,10 +31,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"multiply\"]($2)" js_multiply
+foreign import javascript safe "$1[\"multiply\"]($2)" js_multiply
         :: SVGMatrix -> SVGMatrix -> IO SVGMatrix
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.multiply Mozilla SVGMatrix.multiply documentation> 
@@ -46,7 +46,7 @@
 multiply_ self secondMatrix
   = liftIO (void (js_multiply self secondMatrix))
  
-foreign import javascript unsafe "$1[\"inverse\"]()" js_inverse ::
+foreign import javascript safe "$1[\"inverse\"]()" js_inverse ::
         SVGMatrix -> IO SVGMatrix
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.inverse Mozilla SVGMatrix.inverse documentation> 
@@ -57,7 +57,7 @@
 inverse_ :: (MonadIO m) => SVGMatrix -> m ()
 inverse_ self = liftIO (void (js_inverse self))
  
-foreign import javascript unsafe "$1[\"translate\"]($2, $3)"
+foreign import javascript safe "$1[\"translate\"]($2, $3)"
         js_translate :: SVGMatrix -> Float -> Float -> IO SVGMatrix
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.translate Mozilla SVGMatrix.translate documentation> 
@@ -69,7 +69,7 @@
 translate_ :: (MonadIO m) => SVGMatrix -> Float -> Float -> m ()
 translate_ self x y = liftIO (void (js_translate self x y))
  
-foreign import javascript unsafe "$1[\"scale\"]($2)" js_scale ::
+foreign import javascript safe "$1[\"scale\"]($2)" js_scale ::
         SVGMatrix -> Float -> IO SVGMatrix
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scale Mozilla SVGMatrix.scale documentation> 
@@ -80,7 +80,7 @@
 scale_ :: (MonadIO m) => SVGMatrix -> Float -> m ()
 scale_ self scaleFactor = liftIO (void (js_scale self scaleFactor))
  
-foreign import javascript unsafe "$1[\"scaleNonUniform\"]($2, $3)"
+foreign import javascript safe "$1[\"scaleNonUniform\"]($2, $3)"
         js_scaleNonUniform :: SVGMatrix -> Float -> Float -> IO SVGMatrix
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scaleNonUniform Mozilla SVGMatrix.scaleNonUniform documentation> 
@@ -95,7 +95,7 @@
 scaleNonUniform_ self scaleFactorX scaleFactorY
   = liftIO (void (js_scaleNonUniform self scaleFactorX scaleFactorY))
  
-foreign import javascript unsafe "$1[\"rotate\"]($2)" js_rotate ::
+foreign import javascript safe "$1[\"rotate\"]($2)" js_rotate ::
         SVGMatrix -> Float -> IO SVGMatrix
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotate Mozilla SVGMatrix.rotate documentation> 
@@ -106,7 +106,7 @@
 rotate_ :: (MonadIO m) => SVGMatrix -> Float -> m ()
 rotate_ self angle = liftIO (void (js_rotate self angle))
  
-foreign import javascript unsafe "$1[\"rotateFromVector\"]($2, $3)"
+foreign import javascript safe "$1[\"rotateFromVector\"]($2, $3)"
         js_rotateFromVector :: SVGMatrix -> Float -> Float -> IO SVGMatrix
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotateFromVector Mozilla SVGMatrix.rotateFromVector documentation> 
@@ -120,7 +120,7 @@
 rotateFromVector_ self x y
   = liftIO (void (js_rotateFromVector self x y))
  
-foreign import javascript unsafe "$1[\"flipX\"]()" js_flipX ::
+foreign import javascript safe "$1[\"flipX\"]()" js_flipX ::
         SVGMatrix -> IO SVGMatrix
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipX Mozilla SVGMatrix.flipX documentation> 
@@ -131,7 +131,7 @@
 flipX_ :: (MonadIO m) => SVGMatrix -> m ()
 flipX_ self = liftIO (void (js_flipX self))
  
-foreign import javascript unsafe "$1[\"flipY\"]()" js_flipY ::
+foreign import javascript safe "$1[\"flipY\"]()" js_flipY ::
         SVGMatrix -> IO SVGMatrix
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipY Mozilla SVGMatrix.flipY documentation> 
@@ -142,7 +142,7 @@
 flipY_ :: (MonadIO m) => SVGMatrix -> m ()
 flipY_ self = liftIO (void (js_flipY self))
  
-foreign import javascript unsafe "$1[\"skewX\"]($2)" js_skewX ::
+foreign import javascript safe "$1[\"skewX\"]($2)" js_skewX ::
         SVGMatrix -> Float -> IO SVGMatrix
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewX Mozilla SVGMatrix.skewX documentation> 
@@ -153,7 +153,7 @@
 skewX_ :: (MonadIO m) => SVGMatrix -> Float -> m ()
 skewX_ self angle = liftIO (void (js_skewX self angle))
  
-foreign import javascript unsafe "$1[\"skewY\"]($2)" js_skewY ::
+foreign import javascript safe "$1[\"skewY\"]($2)" js_skewY ::
         SVGMatrix -> Float -> IO SVGMatrix
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewY Mozilla SVGMatrix.skewY documentation> 
@@ -164,7 +164,7 @@
 skewY_ :: (MonadIO m) => SVGMatrix -> Float -> m ()
 skewY_ self angle = liftIO (void (js_skewY self angle))
  
-foreign import javascript unsafe "$1[\"a\"] = $2;" js_setA ::
+foreign import javascript safe "$1[\"a\"] = $2;" js_setA ::
         SVGMatrix -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.a Mozilla SVGMatrix.a documentation> 
@@ -178,7 +178,7 @@
 getA :: (MonadIO m) => SVGMatrix -> m Double
 getA self = liftIO (js_getA self)
  
-foreign import javascript unsafe "$1[\"b\"] = $2;" js_setB ::
+foreign import javascript safe "$1[\"b\"] = $2;" js_setB ::
         SVGMatrix -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.b Mozilla SVGMatrix.b documentation> 
@@ -192,7 +192,7 @@
 getB :: (MonadIO m) => SVGMatrix -> m Double
 getB self = liftIO (js_getB self)
  
-foreign import javascript unsafe "$1[\"c\"] = $2;" js_setC ::
+foreign import javascript safe "$1[\"c\"] = $2;" js_setC ::
         SVGMatrix -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.c Mozilla SVGMatrix.c documentation> 
@@ -206,7 +206,7 @@
 getC :: (MonadIO m) => SVGMatrix -> m Double
 getC self = liftIO (js_getC self)
  
-foreign import javascript unsafe "$1[\"d\"] = $2;" js_setD ::
+foreign import javascript safe "$1[\"d\"] = $2;" js_setD ::
         SVGMatrix -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.d Mozilla SVGMatrix.d documentation> 
@@ -220,7 +220,7 @@
 getD :: (MonadIO m) => SVGMatrix -> m Double
 getD self = liftIO (js_getD self)
  
-foreign import javascript unsafe "$1[\"e\"] = $2;" js_setE ::
+foreign import javascript safe "$1[\"e\"] = $2;" js_setE ::
         SVGMatrix -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.e Mozilla SVGMatrix.e documentation> 
@@ -234,7 +234,7 @@
 getE :: (MonadIO m) => SVGMatrix -> m Double
 getE self = liftIO (js_getE self)
  
-foreign import javascript unsafe "$1[\"f\"] = $2;" js_setF ::
+foreign import javascript safe "$1[\"f\"] = $2;" js_setF ::
         SVGMatrix -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.f Mozilla SVGMatrix.f documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGNumber.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGNumber.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGNumber.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGNumber.hs
@@ -23,11 +23,11 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
-        :: SVGNumber -> Float -> IO ()
+foreign import javascript safe "$1[\"value\"] = $2;" js_setValue ::
+        SVGNumber -> Float -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumber.value Mozilla SVGNumber.value documentation> 
 setValue :: (MonadIO m) => SVGNumber -> Float -> m ()
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGNumberList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGNumberList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGNumberList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGNumberList.hs
@@ -27,17 +27,17 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+foreign import javascript safe "$1[\"clear\"]()" js_clear ::
         SVGNumberList -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.clear Mozilla SVGNumberList.clear documentation> 
 clear :: (MonadIO m) => SVGNumberList -> m ()
 clear self = liftIO (js_clear self)
  
-foreign import javascript unsafe "$1[\"initialize\"]($2)"
+foreign import javascript safe "$1[\"initialize\"]($2)"
         js_initialize :: SVGNumberList -> SVGNumber -> IO SVGNumber
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.initialize Mozilla SVGNumberList.initialize documentation> 
@@ -49,8 +49,8 @@
 initialize_ :: (MonadIO m) => SVGNumberList -> SVGNumber -> m ()
 initialize_ self item = liftIO (void (js_initialize self item))
  
-foreign import javascript unsafe "$1[\"getItem\"]($2)" js_getItem
-        :: SVGNumberList -> Word -> IO SVGNumber
+foreign import javascript safe "$1[\"getItem\"]($2)" js_getItem ::
+        SVGNumberList -> Word -> IO SVGNumber
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.getItem Mozilla SVGNumberList.getItem documentation> 
 getItem :: (MonadIO m) => SVGNumberList -> Word -> m SVGNumber
@@ -60,7 +60,7 @@
 getItem_ :: (MonadIO m) => SVGNumberList -> Word -> m ()
 getItem_ self index = liftIO (void (js_getItem self index))
  
-foreign import javascript unsafe "$1[\"insertItemBefore\"]($2, $3)"
+foreign import javascript safe "$1[\"insertItemBefore\"]($2, $3)"
         js_insertItemBefore ::
         SVGNumberList -> SVGNumber -> Word -> IO SVGNumber
 
@@ -76,7 +76,7 @@
 insertItemBefore_ self item index
   = liftIO (void (js_insertItemBefore self item index))
  
-foreign import javascript unsafe "$1[\"replaceItem\"]($2, $3)"
+foreign import javascript safe "$1[\"replaceItem\"]($2, $3)"
         js_replaceItem ::
         SVGNumberList -> SVGNumber -> Word -> IO SVGNumber
 
@@ -92,7 +92,7 @@
 replaceItem_ self item index
   = liftIO (void (js_replaceItem self item index))
  
-foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+foreign import javascript safe "$1[\"removeItem\"]($2)"
         js_removeItem :: SVGNumberList -> Word -> IO SVGNumber
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.removeItem Mozilla SVGNumberList.removeItem documentation> 
@@ -103,7 +103,7 @@
 removeItem_ :: (MonadIO m) => SVGNumberList -> Word -> m ()
 removeItem_ self index = liftIO (void (js_removeItem self index))
  
-foreign import javascript unsafe "$1[\"appendItem\"]($2)"
+foreign import javascript safe "$1[\"appendItem\"]($2)"
         js_appendItem :: SVGNumberList -> SVGNumber -> IO SVGNumber
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.appendItem Mozilla SVGNumberList.appendItem documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathElement.hs
@@ -73,7 +73,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"getTotalLength\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSeg.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSeg.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSeg.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSeg.hs
@@ -38,7 +38,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern PATHSEG_UNKNOWN = 0
 pattern PATHSEG_CLOSEPATH = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcAbs.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcAbs.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcAbs.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcRel.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcRel.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcRel.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicAbs.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicAbs.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicAbs.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicRel.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicRel.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicRel.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothRel.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothRel.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothRel.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticAbs.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticAbs.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticAbs.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticRel.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticRel.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticRel.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoAbs.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoAbs.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoAbs.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalAbs.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalAbs.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalAbs.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalRel.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalRel.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalRel.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoRel.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoRel.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoRel.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalAbs.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalAbs.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalAbs.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalRel.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalRel.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalRel.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegList.hs
@@ -27,17 +27,17 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+foreign import javascript safe "$1[\"clear\"]()" js_clear ::
         SVGPathSegList -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.clear Mozilla SVGPathSegList.clear documentation> 
 clear :: (MonadIO m) => SVGPathSegList -> m ()
 clear self = liftIO (js_clear self)
  
-foreign import javascript unsafe "$1[\"initialize\"]($2)"
+foreign import javascript safe "$1[\"initialize\"]($2)"
         js_initialize ::
         SVGPathSegList -> Optional SVGPathSeg -> IO SVGPathSeg
 
@@ -58,8 +58,8 @@
       (void
          (js_initialize self (maybeToOptional (fmap toSVGPathSeg newItem))))
  
-foreign import javascript unsafe "$1[\"getItem\"]($2)" js_getItem
-        :: SVGPathSegList -> Word -> IO SVGPathSeg
+foreign import javascript safe "$1[\"getItem\"]($2)" js_getItem ::
+        SVGPathSegList -> Word -> IO SVGPathSeg
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.getItem Mozilla SVGPathSegList.getItem documentation> 
 getItem :: (MonadIO m) => SVGPathSegList -> Word -> m SVGPathSeg
@@ -69,7 +69,7 @@
 getItem_ :: (MonadIO m) => SVGPathSegList -> Word -> m ()
 getItem_ self index = liftIO (void (js_getItem self index))
  
-foreign import javascript unsafe "$1[\"insertItemBefore\"]($2, $3)"
+foreign import javascript safe "$1[\"insertItemBefore\"]($2, $3)"
         js_insertItemBefore ::
         SVGPathSegList -> Optional SVGPathSeg -> Word -> IO SVGPathSeg
 
@@ -94,7 +94,7 @@
             (maybeToOptional (fmap toSVGPathSeg newItem))
             index))
  
-foreign import javascript unsafe "$1[\"replaceItem\"]($2, $3)"
+foreign import javascript safe "$1[\"replaceItem\"]($2, $3)"
         js_replaceItem ::
         SVGPathSegList -> Optional SVGPathSeg -> Word -> IO SVGPathSeg
 
@@ -117,7 +117,7 @@
          (js_replaceItem self (maybeToOptional (fmap toSVGPathSeg newItem))
             index))
  
-foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+foreign import javascript safe "$1[\"removeItem\"]($2)"
         js_removeItem :: SVGPathSegList -> Word -> IO SVGPathSeg
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.removeItem Mozilla SVGPathSegList.removeItem documentation> 
@@ -128,7 +128,7 @@
 removeItem_ :: (MonadIO m) => SVGPathSegList -> Word -> m ()
 removeItem_ self index = liftIO (void (js_removeItem self index))
  
-foreign import javascript unsafe "$1[\"appendItem\"]($2)"
+foreign import javascript safe "$1[\"appendItem\"]($2)"
         js_appendItem ::
         SVGPathSegList -> Optional SVGPathSeg -> IO SVGPathSeg
 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoAbs.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoAbs.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoAbs.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoRel.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoRel.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoRel.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPatternElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPatternElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPatternElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPatternElement.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"patternUnits\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPoint.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPoint.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPoint.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPoint.hs
@@ -24,10 +24,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"matrixTransform\"]($2)"
+foreign import javascript safe "$1[\"matrixTransform\"]($2)"
         js_matrixTransform :: SVGPoint -> SVGMatrix -> IO SVGPoint
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.matrixTransform Mozilla SVGPoint.matrixTransform documentation> 
@@ -41,7 +41,7 @@
 matrixTransform_ self matrix
   = liftIO (void (js_matrixTransform self matrix))
  
-foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+foreign import javascript safe "$1[\"x\"] = $2;" js_setX ::
         SVGPoint -> Float -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.x Mozilla SVGPoint.x documentation> 
@@ -55,7 +55,7 @@
 getX :: (MonadIO m) => SVGPoint -> m Float
 getX self = liftIO (js_getX self)
  
-foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+foreign import javascript safe "$1[\"y\"] = $2;" js_setY ::
         SVGPoint -> Float -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.y Mozilla SVGPoint.y documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPointList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPointList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPointList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPointList.hs
@@ -27,17 +27,17 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+foreign import javascript safe "$1[\"clear\"]()" js_clear ::
         SVGPointList -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.clear Mozilla SVGPointList.clear documentation> 
 clear :: (MonadIO m) => SVGPointList -> m ()
 clear self = liftIO (js_clear self)
  
-foreign import javascript unsafe "$1[\"initialize\"]($2)"
+foreign import javascript safe "$1[\"initialize\"]($2)"
         js_initialize :: SVGPointList -> SVGPoint -> IO SVGPoint
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.initialize Mozilla SVGPointList.initialize documentation> 
@@ -48,8 +48,8 @@
 initialize_ :: (MonadIO m) => SVGPointList -> SVGPoint -> m ()
 initialize_ self item = liftIO (void (js_initialize self item))
  
-foreign import javascript unsafe "$1[\"getItem\"]($2)" js_getItem
-        :: SVGPointList -> Word -> IO SVGPoint
+foreign import javascript safe "$1[\"getItem\"]($2)" js_getItem ::
+        SVGPointList -> Word -> IO SVGPoint
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.getItem Mozilla SVGPointList.getItem documentation> 
 getItem :: (MonadIO m) => SVGPointList -> Word -> m SVGPoint
@@ -59,7 +59,7 @@
 getItem_ :: (MonadIO m) => SVGPointList -> Word -> m ()
 getItem_ self index = liftIO (void (js_getItem self index))
  
-foreign import javascript unsafe "$1[\"insertItemBefore\"]($2, $3)"
+foreign import javascript safe "$1[\"insertItemBefore\"]($2, $3)"
         js_insertItemBefore ::
         SVGPointList -> SVGPoint -> Word -> IO SVGPoint
 
@@ -75,7 +75,7 @@
 insertItemBefore_ self item index
   = liftIO (void (js_insertItemBefore self item index))
  
-foreign import javascript unsafe "$1[\"replaceItem\"]($2, $3)"
+foreign import javascript safe "$1[\"replaceItem\"]($2, $3)"
         js_replaceItem :: SVGPointList -> SVGPoint -> Word -> IO SVGPoint
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.replaceItem Mozilla SVGPointList.replaceItem documentation> 
@@ -90,7 +90,7 @@
 replaceItem_ self item index
   = liftIO (void (js_replaceItem self item index))
  
-foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+foreign import javascript safe "$1[\"removeItem\"]($2)"
         js_removeItem :: SVGPointList -> Word -> IO SVGPoint
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.removeItem Mozilla SVGPointList.removeItem documentation> 
@@ -101,7 +101,7 @@
 removeItem_ :: (MonadIO m) => SVGPointList -> Word -> m ()
 removeItem_ self index = liftIO (void (js_removeItem self index))
  
-foreign import javascript unsafe "$1[\"appendItem\"]($2)"
+foreign import javascript safe "$1[\"appendItem\"]($2)"
         js_appendItem :: SVGPointList -> SVGPoint -> IO SVGPoint
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.appendItem Mozilla SVGPointList.appendItem documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPolygonElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPolygonElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPolygonElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPolygonElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"points\"]" js_getPoints ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPolylineElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPolylineElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPolylineElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPolylineElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"points\"]" js_getPoints ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPreserveAspectRatio.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPreserveAspectRatio.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGPreserveAspectRatio.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPreserveAspectRatio.hs
@@ -37,7 +37,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern SVG_PRESERVEASPECTRATIO_UNKNOWN = 0
 pattern SVG_PRESERVEASPECTRATIO_NONE = 1
@@ -54,8 +54,8 @@
 pattern SVG_MEETORSLICE_MEET = 1
 pattern SVG_MEETORSLICE_SLICE = 2
  
-foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
-        :: SVGPreserveAspectRatio -> Word -> IO ()
+foreign import javascript safe "$1[\"align\"] = $2;" js_setAlign ::
+        SVGPreserveAspectRatio -> Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.align Mozilla SVGPreserveAspectRatio.align documentation> 
 setAlign :: (MonadIO m) => SVGPreserveAspectRatio -> Word -> m ()
@@ -68,7 +68,7 @@
 getAlign :: (MonadIO m) => SVGPreserveAspectRatio -> m Word
 getAlign self = liftIO (js_getAlign self)
  
-foreign import javascript unsafe "$1[\"meetOrSlice\"] = $2;"
+foreign import javascript safe "$1[\"meetOrSlice\"] = $2;"
         js_setMeetOrSlice :: SVGPreserveAspectRatio -> Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.meetOrSlice Mozilla SVGPreserveAspectRatio.meetOrSlice documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGRadialGradientElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGRadialGradientElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGRadialGradientElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGRadialGradientElement.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"cx\"]" js_getCx ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGRect.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGRect.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGRect.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGRect.hs
@@ -24,10 +24,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+foreign import javascript safe "$1[\"x\"] = $2;" js_setX ::
         SVGRect -> Float -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.x Mozilla SVGRect.x documentation> 
@@ -41,7 +41,7 @@
 getX :: (MonadIO m) => SVGRect -> m Float
 getX self = liftIO (js_getX self)
  
-foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+foreign import javascript safe "$1[\"y\"] = $2;" js_setY ::
         SVGRect -> Float -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.y Mozilla SVGRect.y documentation> 
@@ -55,8 +55,8 @@
 getY :: (MonadIO m) => SVGRect -> m Float
 getY self = liftIO (js_getY self)
  
-foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
-        :: SVGRect -> Float -> IO ()
+foreign import javascript safe "$1[\"width\"] = $2;" js_setWidth ::
+        SVGRect -> Float -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.width Mozilla SVGRect.width documentation> 
 setWidth :: (MonadIO m) => SVGRect -> Float -> m ()
@@ -69,8 +69,8 @@
 getWidth :: (MonadIO m) => SVGRect -> m Float
 getWidth self = liftIO (js_getWidth self)
  
-foreign import javascript unsafe "$1[\"height\"] = $2;"
-        js_setHeight :: SVGRect -> Float -> IO ()
+foreign import javascript safe "$1[\"height\"] = $2;" js_setHeight
+        :: SVGRect -> Float -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.height Mozilla SVGRect.height documentation> 
 setHeight :: (MonadIO m) => SVGRect -> Float -> m ()
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGRectElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGRectElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGRectElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGRectElement.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"]" js_getX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGRenderingIntent.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGRenderingIntent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGRenderingIntent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGRenderingIntent.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern RENDERING_INTENT_UNKNOWN = 0
 pattern RENDERING_INTENT_AUTO = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGSVGElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGSVGElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGSVGElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGSVGElement.hs
@@ -55,7 +55,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"suspendRedraw\"]($2)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGScriptElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGScriptElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGScriptElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGScriptElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGStopElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGStopElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGStopElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGStopElement.hs
@@ -22,7 +22,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"offset\"]" js_getOffset ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGStringList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGStringList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGStringList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGStringList.hs
@@ -27,17 +27,17 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+foreign import javascript safe "$1[\"clear\"]()" js_clear ::
         SVGStringList -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.clear Mozilla SVGStringList.clear documentation> 
 clear :: (MonadIO m) => SVGStringList -> m ()
 clear self = liftIO (js_clear self)
  
-foreign import javascript unsafe "$1[\"initialize\"]($2)"
+foreign import javascript safe "$1[\"initialize\"]($2)"
         js_initialize :: SVGStringList -> JSString -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.initialize Mozilla SVGStringList.initialize documentation> 
@@ -53,8 +53,8 @@
 initialize_ self item
   = liftIO (void (js_initialize self (toJSString item)))
  
-foreign import javascript unsafe "$1[\"getItem\"]($2)" js_getItem
-        :: SVGStringList -> Word -> IO JSString
+foreign import javascript safe "$1[\"getItem\"]($2)" js_getItem ::
+        SVGStringList -> Word -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.getItem Mozilla SVGStringList.getItem documentation> 
 getItem ::
@@ -67,7 +67,7 @@
 getItem_ :: (MonadIO m) => SVGStringList -> Word -> m ()
 getItem_ self index = liftIO (void (js_getItem self index))
  
-foreign import javascript unsafe "$1[\"insertItemBefore\"]($2, $3)"
+foreign import javascript safe "$1[\"insertItemBefore\"]($2, $3)"
         js_insertItemBefore ::
         SVGStringList -> JSString -> Word -> IO JSString
 
@@ -87,7 +87,7 @@
 insertItemBefore_ self item index
   = liftIO (void (js_insertItemBefore self (toJSString item) index))
  
-foreign import javascript unsafe "$1[\"replaceItem\"]($2, $3)"
+foreign import javascript safe "$1[\"replaceItem\"]($2, $3)"
         js_replaceItem :: SVGStringList -> JSString -> Word -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.replaceItem Mozilla SVGStringList.replaceItem documentation> 
@@ -105,7 +105,7 @@
 replaceItem_ self item index
   = liftIO (void (js_replaceItem self (toJSString item) index))
  
-foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+foreign import javascript safe "$1[\"removeItem\"]($2)"
         js_removeItem :: SVGStringList -> Word -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.removeItem Mozilla SVGStringList.removeItem documentation> 
@@ -119,7 +119,7 @@
 removeItem_ :: (MonadIO m) => SVGStringList -> Word -> m ()
 removeItem_ self index = liftIO (void (js_removeItem self index))
  
-foreign import javascript unsafe "$1[\"appendItem\"]($2)"
+foreign import javascript safe "$1[\"appendItem\"]($2)"
         js_appendItem :: SVGStringList -> JSString -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.appendItem Mozilla SVGStringList.appendItem documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGStyleElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGStyleElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGStyleElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGStyleElement.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"disabled\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTests.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTests.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGTests.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTests.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTextContentElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTextContentElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGTextContentElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTextContentElement.hs
@@ -36,7 +36,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"getNumberOfChars\"]()"
@@ -71,8 +71,8 @@
   = liftIO
       (void (js_getComputedTextLength (toSVGTextContentElement self)))
  
-foreign import javascript unsafe
-        "$1[\"getSubStringLength\"]($2, $3)" js_getSubStringLength ::
+foreign import javascript safe "$1[\"getSubStringLength\"]($2, $3)"
+        js_getSubStringLength ::
         SVGTextContentElement -> Optional Word -> Optional Word -> IO Float
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getSubStringLength Mozilla SVGTextContentElement.getSubStringLength documentation> 
@@ -96,8 +96,8 @@
             (maybeToOptional offset)
             (maybeToOptional length)))
  
-foreign import javascript unsafe
-        "$1[\"getStartPositionOfChar\"]($2)" js_getStartPositionOfChar ::
+foreign import javascript safe "$1[\"getStartPositionOfChar\"]($2)"
+        js_getStartPositionOfChar ::
         SVGTextContentElement -> Optional Word -> IO SVGPoint
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getStartPositionOfChar Mozilla SVGTextContentElement.getStartPositionOfChar documentation> 
@@ -119,7 +119,7 @@
          (js_getStartPositionOfChar (toSVGTextContentElement self)
             (maybeToOptional offset)))
  
-foreign import javascript unsafe "$1[\"getEndPositionOfChar\"]($2)"
+foreign import javascript safe "$1[\"getEndPositionOfChar\"]($2)"
         js_getEndPositionOfChar ::
         SVGTextContentElement -> Optional Word -> IO SVGPoint
 
@@ -142,7 +142,7 @@
          (js_getEndPositionOfChar (toSVGTextContentElement self)
             (maybeToOptional offset)))
  
-foreign import javascript unsafe "$1[\"getExtentOfChar\"]($2)"
+foreign import javascript safe "$1[\"getExtentOfChar\"]($2)"
         js_getExtentOfChar ::
         SVGTextContentElement -> Optional Word -> IO SVGRect
 
@@ -165,7 +165,7 @@
          (js_getExtentOfChar (toSVGTextContentElement self)
             (maybeToOptional offset)))
  
-foreign import javascript unsafe "$1[\"getRotationOfChar\"]($2)"
+foreign import javascript safe "$1[\"getRotationOfChar\"]($2)"
         js_getRotationOfChar ::
         SVGTextContentElement -> Optional Word -> IO Float
 
@@ -209,7 +209,7 @@
       (void
          (js_getCharNumAtPosition (toSVGTextContentElement self) point))
  
-foreign import javascript unsafe "$1[\"selectSubString\"]($2, $3)"
+foreign import javascript safe "$1[\"selectSubString\"]($2, $3)"
         js_selectSubString ::
         SVGTextContentElement -> Optional Word -> Optional Word -> IO ()
 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTextPathElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTextPathElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGTextPathElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTextPathElement.hs
@@ -29,7 +29,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern TEXTPATH_METHODTYPE_UNKNOWN = 0
 pattern TEXTPATH_METHODTYPE_ALIGN = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTextPositioningElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTextPositioningElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGTextPositioningElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTextPositioningElement.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"]" js_getX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTransform.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTransform.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGTransform.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTransform.hs
@@ -29,17 +29,17 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"setMatrix\"]($2)"
-        js_setMatrix :: SVGTransform -> SVGMatrix -> IO ()
+foreign import javascript safe "$1[\"setMatrix\"]($2)" js_setMatrix
+        :: SVGTransform -> SVGMatrix -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setMatrix Mozilla SVGTransform.setMatrix documentation> 
 setMatrix :: (MonadIO m) => SVGTransform -> SVGMatrix -> m ()
 setMatrix self matrix = liftIO (js_setMatrix self matrix)
  
-foreign import javascript unsafe "$1[\"setTranslate\"]($2, $3)"
+foreign import javascript safe "$1[\"setTranslate\"]($2, $3)"
         js_setTranslate :: SVGTransform -> Float -> Float -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setTranslate Mozilla SVGTransform.setTranslate documentation> 
@@ -47,14 +47,14 @@
              (MonadIO m) => SVGTransform -> Float -> Float -> m ()
 setTranslate self tx ty = liftIO (js_setTranslate self tx ty)
  
-foreign import javascript unsafe "$1[\"setScale\"]($2, $3)"
+foreign import javascript safe "$1[\"setScale\"]($2, $3)"
         js_setScale :: SVGTransform -> Float -> Float -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setScale Mozilla SVGTransform.setScale documentation> 
 setScale :: (MonadIO m) => SVGTransform -> Float -> Float -> m ()
 setScale self sx sy = liftIO (js_setScale self sx sy)
  
-foreign import javascript unsafe "$1[\"setRotate\"]($2, $3, $4)"
+foreign import javascript safe "$1[\"setRotate\"]($2, $3, $4)"
         js_setRotate :: SVGTransform -> Float -> Float -> Float -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setRotate Mozilla SVGTransform.setRotate documentation> 
@@ -62,14 +62,14 @@
           (MonadIO m) => SVGTransform -> Float -> Float -> Float -> m ()
 setRotate self angle cx cy = liftIO (js_setRotate self angle cx cy)
  
-foreign import javascript unsafe "$1[\"setSkewX\"]($2)" js_setSkewX
+foreign import javascript safe "$1[\"setSkewX\"]($2)" js_setSkewX
         :: SVGTransform -> Float -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setSkewX Mozilla SVGTransform.setSkewX documentation> 
 setSkewX :: (MonadIO m) => SVGTransform -> Float -> m ()
 setSkewX self angle = liftIO (js_setSkewX self angle)
  
-foreign import javascript unsafe "$1[\"setSkewY\"]($2)" js_setSkewY
+foreign import javascript safe "$1[\"setSkewY\"]($2)" js_setSkewY
         :: SVGTransform -> Float -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setSkewY Mozilla SVGTransform.setSkewY documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTransformList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTransformList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGTransformList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTransformList.hs
@@ -30,17 +30,17 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+foreign import javascript safe "$1[\"clear\"]()" js_clear ::
         SVGTransformList -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.clear Mozilla SVGTransformList.clear documentation> 
 clear :: (MonadIO m) => SVGTransformList -> m ()
 clear self = liftIO (js_clear self)
  
-foreign import javascript unsafe "$1[\"initialize\"]($2)"
+foreign import javascript safe "$1[\"initialize\"]($2)"
         js_initialize ::
         SVGTransformList -> SVGTransform -> IO SVGTransform
 
@@ -54,8 +54,8 @@
             (MonadIO m) => SVGTransformList -> SVGTransform -> m ()
 initialize_ self item = liftIO (void (js_initialize self item))
  
-foreign import javascript unsafe "$1[\"getItem\"]($2)" js_getItem
-        :: SVGTransformList -> Word -> IO SVGTransform
+foreign import javascript safe "$1[\"getItem\"]($2)" js_getItem ::
+        SVGTransformList -> Word -> IO SVGTransform
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.getItem Mozilla SVGTransformList.getItem documentation> 
 getItem ::
@@ -66,7 +66,7 @@
 getItem_ :: (MonadIO m) => SVGTransformList -> Word -> m ()
 getItem_ self index = liftIO (void (js_getItem self index))
  
-foreign import javascript unsafe "$1[\"insertItemBefore\"]($2, $3)"
+foreign import javascript safe "$1[\"insertItemBefore\"]($2, $3)"
         js_insertItemBefore ::
         SVGTransformList -> SVGTransform -> Word -> IO SVGTransform
 
@@ -83,7 +83,7 @@
 insertItemBefore_ self item index
   = liftIO (void (js_insertItemBefore self item index))
  
-foreign import javascript unsafe "$1[\"replaceItem\"]($2, $3)"
+foreign import javascript safe "$1[\"replaceItem\"]($2, $3)"
         js_replaceItem ::
         SVGTransformList -> SVGTransform -> Word -> IO SVGTransform
 
@@ -100,7 +100,7 @@
 replaceItem_ self item index
   = liftIO (void (js_replaceItem self item index))
  
-foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+foreign import javascript safe "$1[\"removeItem\"]($2)"
         js_removeItem :: SVGTransformList -> Word -> IO SVGTransform
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.removeItem Mozilla SVGTransformList.removeItem documentation> 
@@ -112,7 +112,7 @@
 removeItem_ :: (MonadIO m) => SVGTransformList -> Word -> m ()
 removeItem_ self index = liftIO (void (js_removeItem self index))
  
-foreign import javascript unsafe "$1[\"appendItem\"]($2)"
+foreign import javascript safe "$1[\"appendItem\"]($2)"
         js_appendItem ::
         SVGTransformList -> SVGTransform -> IO SVGTransform
 
@@ -126,7 +126,7 @@
             (MonadIO m) => SVGTransformList -> SVGTransform -> m ()
 appendItem_ self item = liftIO (void (js_appendItem self item))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"createSVGTransformFromMatrix\"]($2)"
         js_createSVGTransformFromMatrix ::
         SVGTransformList -> SVGMatrix -> IO SVGTransform
@@ -143,7 +143,7 @@
 createSVGTransformFromMatrix_ self matrix
   = liftIO (void (js_createSVGTransformFromMatrix self matrix))
  
-foreign import javascript unsafe "$1[\"consolidate\"]()"
+foreign import javascript safe "$1[\"consolidate\"]()"
         js_consolidate :: SVGTransformList -> IO SVGTransform
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.consolidate Mozilla SVGTransformList.consolidate documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGURIReference.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGURIReference.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGURIReference.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGURIReference.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"href\"]" js_getHref ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGUnitTypes.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGUnitTypes.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGUnitTypes.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGUnitTypes.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern SVG_UNIT_TYPE_UNKNOWN = 0
 pattern SVG_UNIT_TYPE_USERSPACEONUSE = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGUseElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGUseElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGUseElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGUseElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"x\"]" js_getX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGViewElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGViewElement.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGViewElement.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGViewElement.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"viewTarget\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGViewSpec.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGViewSpec.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGViewSpec.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGViewSpec.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"transform\"]"
@@ -81,7 +81,7 @@
 getViewTargetString self
   = liftIO (fromJSString <$> (js_getViewTargetString self))
  
-foreign import javascript unsafe "$1[\"zoomAndPan\"] = $2;"
+foreign import javascript safe "$1[\"zoomAndPan\"] = $2;"
         js_setZoomAndPan :: SVGViewSpec -> Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.zoomAndPan Mozilla SVGViewSpec.zoomAndPan documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGZoomAndPan.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGZoomAndPan.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGZoomAndPan.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGZoomAndPan.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern SVG_ZOOMANDPAN_UNKNOWN = 0
 pattern SVG_ZOOMANDPAN_DISABLE = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGZoomEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGZoomEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SVGZoomEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGZoomEvent.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"zoomRectScreen\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Screen.hs b/src/GHCJS/DOM/JSFFI/Generated/Screen.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Screen.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Screen.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ScriptProcessorNode.hs b/src/GHCJS/DOM/JSFFI/Generated/ScriptProcessorNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ScriptProcessorNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ScriptProcessorNode.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode.onaudioprocess Mozilla ScriptProcessorNode.onaudioprocess documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SecurityPolicyViolationEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/SecurityPolicyViolationEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SecurityPolicyViolationEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SecurityPolicyViolationEvent.hs
@@ -31,7 +31,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Selection.hs b/src/GHCJS/DOM/JSFFI/Generated/Selection.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Selection.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Selection.hs
@@ -39,7 +39,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"collapse\"]($2, $3)"
@@ -54,14 +54,14 @@
       (js_collapse self (maybeToOptional (fmap toNode node))
          (maybeToOptional offset))
  
-foreign import javascript unsafe "$1[\"collapseToEnd\"]()"
+foreign import javascript safe "$1[\"collapseToEnd\"]()"
         js_collapseToEnd :: Selection -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.collapseToEnd Mozilla Selection.collapseToEnd documentation> 
 collapseToEnd :: (MonadIO m) => Selection -> m ()
 collapseToEnd self = liftIO (js_collapseToEnd self)
  
-foreign import javascript unsafe "$1[\"collapseToStart\"]()"
+foreign import javascript safe "$1[\"collapseToStart\"]()"
         js_collapseToStart :: Selection -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.collapseToStart Mozilla Selection.collapseToStart documentation> 
@@ -100,7 +100,7 @@
 selectAllChildren self node
   = liftIO (js_selectAllChildren self (toNode node))
  
-foreign import javascript unsafe "$1[\"extend\"]($2, $3)" js_extend
+foreign import javascript safe "$1[\"extend\"]($2, $3)" js_extend
         :: Selection -> Node -> Optional Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extend Mozilla Selection.extend documentation> 
@@ -109,7 +109,7 @@
 extend self node offset
   = liftIO (js_extend self (toNode node) (maybeToOptional offset))
  
-foreign import javascript unsafe "$1[\"getRangeAt\"]($2)"
+foreign import javascript safe "$1[\"getRangeAt\"]($2)"
         js_getRangeAt :: Selection -> Word -> IO Range
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.getRangeAt Mozilla Selection.getRangeAt documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ShadowRoot.hs b/src/GHCJS/DOM/JSFFI/Generated/ShadowRoot.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ShadowRoot.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ShadowRoot.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"mode\"]" js_getMode ::
@@ -41,7 +41,7 @@
 getHost :: (MonadIO m) => ShadowRoot -> m Element
 getHost self = liftIO (js_getHost self)
  
-foreign import javascript unsafe "$1[\"innerHTML\"] = $2;"
+foreign import javascript safe "$1[\"innerHTML\"] = $2;"
         js_setInnerHTML :: ShadowRoot -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot.innerHTML Mozilla ShadowRoot.innerHTML documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SiteBoundCredential.hs b/src/GHCJS/DOM/JSFFI/Generated/SiteBoundCredential.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SiteBoundCredential.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SiteBoundCredential.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"name\"]" js_getName ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Slotable.hs b/src/GHCJS/DOM/JSFFI/Generated/Slotable.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Slotable.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Slotable.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"assignedSlot\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SourceBuffer.hs b/src/GHCJS/DOM/JSFFI/Generated/SourceBuffer.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SourceBuffer.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SourceBuffer.hs
@@ -32,10 +32,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"appendBuffer\"]($2)"
+foreign import javascript safe "$1[\"appendBuffer\"]($2)"
         js_appendBuffer :: SourceBuffer -> BufferSource -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendBuffer Mozilla SourceBuffer.appendBuffer documentation> 
@@ -44,21 +44,21 @@
 appendBuffer self data'
   = liftIO (js_appendBuffer self (toBufferSource data'))
  
-foreign import javascript unsafe "$1[\"abort\"]()" js_abort ::
+foreign import javascript safe "$1[\"abort\"]()" js_abort ::
         SourceBuffer -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.abort Mozilla SourceBuffer.abort documentation> 
 abort :: (MonadIO m) => SourceBuffer -> m ()
 abort self = liftIO (js_abort self)
  
-foreign import javascript unsafe "$1[\"remove\"]($2, $3)" js_remove
+foreign import javascript safe "$1[\"remove\"]($2, $3)" js_remove
         :: SourceBuffer -> Double -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.remove Mozilla SourceBuffer.remove documentation> 
 remove :: (MonadIO m) => SourceBuffer -> Double -> Double -> m ()
 remove self start end = liftIO (js_remove self start end)
  
-foreign import javascript unsafe "$1[\"mode\"] = $2;" js_setMode ::
+foreign import javascript safe "$1[\"mode\"] = $2;" js_setMode ::
         SourceBuffer -> JSVal -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.mode Mozilla SourceBuffer.mode documentation> 
@@ -79,14 +79,14 @@
 getUpdating :: (MonadIO m) => SourceBuffer -> m Bool
 getUpdating self = liftIO (js_getUpdating self)
  
-foreign import javascript unsafe "$1[\"buffered\"]" js_getBuffered
-        :: SourceBuffer -> IO TimeRanges
+foreign import javascript safe "$1[\"buffered\"]" js_getBuffered ::
+        SourceBuffer -> IO TimeRanges
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.buffered Mozilla SourceBuffer.buffered documentation> 
 getBuffered :: (MonadIO m) => SourceBuffer -> m TimeRanges
 getBuffered self = liftIO (js_getBuffered self)
  
-foreign import javascript unsafe "$1[\"timestampOffset\"] = $2;"
+foreign import javascript safe "$1[\"timestampOffset\"] = $2;"
         js_setTimestampOffset :: SourceBuffer -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.timestampOffset Mozilla SourceBuffer.timestampOffset documentation> 
@@ -122,7 +122,7 @@
 getTextTracks :: (MonadIO m) => SourceBuffer -> m TextTrackList
 getTextTracks self = liftIO (js_getTextTracks self)
  
-foreign import javascript unsafe "$1[\"appendWindowStart\"] = $2;"
+foreign import javascript safe "$1[\"appendWindowStart\"] = $2;"
         js_setAppendWindowStart :: SourceBuffer -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendWindowStart Mozilla SourceBuffer.appendWindowStart documentation> 
@@ -138,7 +138,7 @@
 getAppendWindowStart :: (MonadIO m) => SourceBuffer -> m Double
 getAppendWindowStart self = liftIO (js_getAppendWindowStart self)
  
-foreign import javascript unsafe "$1[\"appendWindowEnd\"] = $2;"
+foreign import javascript safe "$1[\"appendWindowEnd\"] = $2;"
         js_setAppendWindowEnd :: SourceBuffer -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendWindowEnd Mozilla SourceBuffer.appendWindowEnd documentation> 
@@ -167,8 +167,8 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.onerror Mozilla SourceBuffer.onerror documentation> 
 error :: EventName SourceBuffer UIEvent
-error = unsafeEventName (toJSString "error")
+error = unsafeEventNameAsync (toJSString "error")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.onabort Mozilla SourceBuffer.onabort documentation> 
 abortEvent :: EventName SourceBuffer UIEvent
-abortEvent = unsafeEventName (toJSString "abort")
+abortEvent = unsafeEventNameAsync (toJSString "abort")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SourceBufferList.hs b/src/GHCJS/DOM/JSFFI/Generated/SourceBufferList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SourceBufferList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SourceBufferList.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesis.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesis.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesis.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesis.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"speak\"]($2)" js_speak ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"charIndex\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisUtterance.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisUtterance.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisUtterance.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisUtterance.hs
@@ -29,7 +29,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
@@ -168,7 +168,7 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onerror Mozilla SpeechSynthesisUtterance.onerror documentation> 
 error :: EventName SpeechSynthesisUtterance UIEvent
-error = unsafeEventName (toJSString "error")
+error = unsafeEventNameAsync (toJSString "error")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onpause Mozilla SpeechSynthesisUtterance.onpause documentation> 
 pause :: EventName SpeechSynthesisUtterance Event
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisVoice.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisVoice.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisVoice.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisVoice.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"voiceURI\"]" js_getVoiceURI
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StaticRange.hs b/src/GHCJS/DOM/JSFFI/Generated/StaticRange.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/StaticRange.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/StaticRange.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"startOffset\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Storage.hs b/src/GHCJS/DOM/JSFFI/Generated/Storage.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Storage.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Storage.hs
@@ -25,10 +25,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"key\"]($2)" js_key ::
+foreign import javascript safe "$1[\"key\"]($2)" js_key ::
         Storage -> Word -> IO (Nullable JSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
@@ -56,7 +56,7 @@
 keyUnchecked self index
   = liftIO (fromJust . fromMaybeJSString <$> (js_key self index))
  
-foreign import javascript unsafe "$1[$2]" js_getItem ::
+foreign import javascript safe "$1[$2]" js_getItem ::
         Storage -> JSString -> IO (Nullable JSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.getItem Mozilla Storage.getItem documentation> 
@@ -89,8 +89,8 @@
       (fromJust . fromMaybeJSString <$>
          (js_getItem self (toJSString key)))
  
-foreign import javascript unsafe "$1[\"setItem\"]($2, $3)"
-        js_setItem :: Storage -> JSString -> JSString -> IO ()
+foreign import javascript safe "$1[\"setItem\"]($2, $3)" js_setItem
+        :: Storage -> JSString -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.setItem Mozilla Storage.setItem documentation> 
 setItem ::
@@ -99,21 +99,21 @@
 setItem self key data'
   = liftIO (js_setItem self (toJSString key) (toJSString data'))
  
-foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+foreign import javascript safe "$1[\"removeItem\"]($2)"
         js_removeItem :: Storage -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.removeItem Mozilla Storage.removeItem documentation> 
 removeItem :: (MonadIO m, ToJSString key) => Storage -> key -> m ()
 removeItem self key = liftIO (js_removeItem self (toJSString key))
  
-foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+foreign import javascript safe "$1[\"clear\"]()" js_clear ::
         Storage -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.clear Mozilla Storage.clear documentation> 
 clear :: (MonadIO m) => Storage -> m ()
 clear self = liftIO (js_clear self)
  
-foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+foreign import javascript safe "$1[\"length\"]" js_getLength ::
         Storage -> IO Word
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.length Mozilla Storage.length documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageErrorCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/StorageErrorCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/StorageErrorCallback.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageErrorCallback Mozilla StorageErrorCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/StorageEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/StorageEvent.hs
@@ -28,7 +28,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageInfo.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/StorageInfo.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/StorageInfo.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageQuota.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageQuota.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/StorageQuota.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/StorageQuota.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageQuotaCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageQuotaCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/StorageQuotaCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/StorageQuotaCallback.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuotaCallback Mozilla StorageQuotaCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageUsageCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageUsageCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/StorageUsageCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/StorageUsageCallback.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageUsageCallback Mozilla StorageUsageCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StringCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/StringCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/StringCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/StringCallback.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StringCallback Mozilla StringCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StyleMedia.hs b/src/GHCJS/DOM/JSFFI/Generated/StyleMedia.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/StyleMedia.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/StyleMedia.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StyleSheet.hs b/src/GHCJS/DOM/JSFFI/Generated/StyleSheet.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/StyleSheet.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/StyleSheet.hs
@@ -28,7 +28,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"type\"]" js_getType ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StyleSheetList.hs b/src/GHCJS/DOM/JSFFI/Generated/StyleSheetList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/StyleSheetList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/StyleSheetList.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SubtleCrypto.hs b/src/GHCJS/DOM/JSFFI/Generated/SubtleCrypto.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/SubtleCrypto.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/SubtleCrypto.hs
@@ -29,7 +29,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript interruptible
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Text.hs b/src/GHCJS/DOM/JSFFI/Generated/Text.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Text.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Text.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"Text\"]($1)"
@@ -33,8 +33,8 @@
 newText :: (MonadIO m, ToJSString data') => Maybe data' -> m Text
 newText data' = liftIO (js_newText (toOptionalJSString data'))
  
-foreign import javascript unsafe "$1[\"splitText\"]($2)"
-        js_splitText :: Text -> Word -> IO Text
+foreign import javascript safe "$1[\"splitText\"]($2)" js_splitText
+        :: Text -> Word -> IO Text
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.splitText Mozilla Text.splitText documentation> 
 splitText :: (MonadIO m, IsText self) => self -> Word -> m Text
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextDecoder.hs b/src/GHCJS/DOM/JSFFI/Generated/TextDecoder.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TextDecoder.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextDecoder.hs
@@ -24,10 +24,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe
+foreign import javascript safe
         "new window[\"TextDecoder\"]($1,\n$2)" js_newTextDecoder ::
         Optional JSString -> Optional TextDecoderOptions -> IO TextDecoder
 
@@ -40,7 +40,7 @@
       (js_newTextDecoder (toOptionalJSString label)
          (maybeToOptional options))
  
-foreign import javascript unsafe "$1[\"decode\"]($2, $3)" js_decode
+foreign import javascript safe "$1[\"decode\"]($2, $3)" js_decode
         ::
         TextDecoder ->
           Optional BufferSource -> Optional TextDecodeOptions -> IO JSString
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextEncoder.hs b/src/GHCJS/DOM/JSFFI/Generated/TextEncoder.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TextEncoder.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextEncoder.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"TextEncoder\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/TextEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TextEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextEvent.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextMetrics.hs b/src/GHCJS/DOM/JSFFI/Generated/TextMetrics.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TextMetrics.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextMetrics.hs
@@ -21,7 +21,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/TextTrack.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TextTrack.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextTrack.hs
@@ -32,10 +32,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"addCue\"]($2)" js_addCue ::
+foreign import javascript safe "$1[\"addCue\"]($2)" js_addCue ::
         TextTrack -> TextTrackCue -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.addCue Mozilla TextTrack.addCue documentation> 
@@ -43,8 +43,8 @@
        (MonadIO m, IsTextTrackCue cue) => TextTrack -> cue -> m ()
 addCue self cue = liftIO (js_addCue self (toTextTrackCue cue))
  
-foreign import javascript unsafe "$1[\"removeCue\"]($2)"
-        js_removeCue :: TextTrack -> TextTrackCue -> IO ()
+foreign import javascript safe "$1[\"removeCue\"]($2)" js_removeCue
+        :: TextTrack -> TextTrackCue -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.removeCue Mozilla TextTrack.removeCue documentation> 
 removeCue ::
@@ -60,7 +60,7 @@
 addRegion self region
   = liftIO (js_addRegion self (maybeToOptional region))
  
-foreign import javascript unsafe "$1[\"removeRegion\"]($2)"
+foreign import javascript safe "$1[\"removeRegion\"]($2)"
         js_removeRegion :: TextTrack -> Optional VTTRegion -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.removeRegion Mozilla TextTrack.removeRegion documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextTrackCue.hs b/src/GHCJS/DOM/JSFFI/Generated/TextTrackCue.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TextTrackCue.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextTrackCue.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"track\"]" js_getTrack ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextTrackCueList.hs b/src/GHCJS/DOM/JSFFI/Generated/TextTrackCueList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TextTrackCueList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextTrackCueList.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextTrackList.hs b/src/GHCJS/DOM/JSFFI/Generated/TextTrackList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TextTrackList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextTrackList.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TimeRanges.hs b/src/GHCJS/DOM/JSFFI/Generated/TimeRanges.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TimeRanges.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TimeRanges.hs
@@ -23,10 +23,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"start\"]($2)" js_start ::
+foreign import javascript safe "$1[\"start\"]($2)" js_start ::
         TimeRanges -> Word -> IO Double
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.start Mozilla TimeRanges.start documentation> 
@@ -37,7 +37,7 @@
 start_ :: (MonadIO m) => TimeRanges -> Word -> m ()
 start_ self index = liftIO (void (js_start self index))
  
-foreign import javascript unsafe "$1[\"end\"]($2)" js_end ::
+foreign import javascript safe "$1[\"end\"]($2)" js_end ::
         TimeRanges -> Word -> IO Double
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.end Mozilla TimeRanges.end documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Touch.hs b/src/GHCJS/DOM/JSFFI/Generated/Touch.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Touch.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Touch.hs
@@ -28,7 +28,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"clientX\"]" js_getClientX ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TouchEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/TouchEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TouchEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TouchEvent.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TouchList.hs b/src/GHCJS/DOM/JSFFI/Generated/TouchList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TouchList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TouchList.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TrackEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/TrackEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TrackEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TrackEvent.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TransitionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/TransitionEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TransitionEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TransitionEvent.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TreeWalker.hs b/src/GHCJS/DOM/JSFFI/Generated/TreeWalker.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/TreeWalker.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/TreeWalker.hs
@@ -33,7 +33,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"parentNode\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/URL.hs b/src/GHCJS/DOM/JSFFI/Generated/URL.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/URL.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/URL.hs
@@ -35,17 +35,17 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "new window[\"URL\"]($1)"
-        js_newURL :: JSString -> IO URL
+foreign import javascript safe "new window[\"URL\"]($1)" js_newURL
+        :: JSString -> IO URL
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation> 
 newURL :: (MonadIO m, ToJSString url) => url -> m URL
 newURL url = liftIO (js_newURL (toJSString url))
  
-foreign import javascript unsafe "new window[\"URL\"]($1, $2)"
+foreign import javascript safe "new window[\"URL\"]($1, $2)"
         js_newURL' :: JSString -> JSString -> IO URL
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation> 
@@ -55,7 +55,7 @@
 newURL' url base
   = liftIO (js_newURL' (toJSString url) (toJSString base))
  
-foreign import javascript unsafe "new window[\"URL\"]($1, $2)"
+foreign import javascript safe "new window[\"URL\"]($1, $2)"
         js_newURL'' :: JSString -> URL -> IO URL
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation> 
@@ -73,45 +73,45 @@
 toJSON_ :: (MonadIO m) => URL -> m ()
 toJSON_ self = liftIO (void (js_toJSON self))
  
-foreign import javascript unsafe "$1[\"createObjectURL\"]($2)"
-        js_createObjectURL :: URL -> Blob -> IO JSString
+foreign import javascript unsafe
+        "window[\"URL\"][\"createObjectURL\"]($1)" js_createObjectURL ::
+        Blob -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
 createObjectURL ::
-                (MonadIO m, IsBlob blob, FromJSString result) =>
-                  URL -> blob -> m result
-createObjectURL self blob
-  = liftIO (fromJSString <$> (js_createObjectURL self (toBlob blob)))
+                (MonadIO m, IsBlob blob, FromJSString result) => blob -> m result
+createObjectURL blob
+  = liftIO (fromJSString <$> (js_createObjectURL (toBlob blob)))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
-createObjectURL_ :: (MonadIO m, IsBlob blob) => URL -> blob -> m ()
-createObjectURL_ self blob
-  = liftIO (void (js_createObjectURL self (toBlob blob)))
+createObjectURL_ :: (MonadIO m, IsBlob blob) => blob -> m ()
+createObjectURL_ blob
+  = liftIO (void (js_createObjectURL (toBlob blob)))
  
-foreign import javascript unsafe "$1[\"revokeObjectURL\"]($2)"
-        js_revokeObjectURL :: URL -> JSString -> IO ()
+foreign import javascript unsafe
+        "window[\"URL\"][\"revokeObjectURL\"]($1)" js_revokeObjectURL ::
+        JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.revokeObjectURL Mozilla URL.revokeObjectURL documentation> 
-revokeObjectURL ::
-                (MonadIO m, ToJSString url) => URL -> url -> m ()
-revokeObjectURL self url
-  = liftIO (js_revokeObjectURL self (toJSString url))
+revokeObjectURL :: (MonadIO m, ToJSString url) => url -> m ()
+revokeObjectURL url = liftIO (js_revokeObjectURL (toJSString url))
  
-foreign import javascript unsafe "$1[\"createObjectURL\"]($2)"
-        js_createObjectURLSource :: URL -> MediaSource -> IO JSString
+foreign import javascript unsafe
+        "window[\"URL\"][\"createObjectURL\"]($1)" js_createObjectURLSource
+        :: MediaSource -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
 createObjectURLSource ::
-                      (MonadIO m, FromJSString result) => URL -> MediaSource -> m result
-createObjectURLSource self source
-  = liftIO (fromJSString <$> (js_createObjectURLSource self source))
+                      (MonadIO m, FromJSString result) => MediaSource -> m result
+createObjectURLSource source
+  = liftIO (fromJSString <$> (js_createObjectURLSource source))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
-createObjectURLSource_ :: (MonadIO m) => URL -> MediaSource -> m ()
-createObjectURLSource_ self source
-  = liftIO (void (js_createObjectURLSource self source))
+createObjectURLSource_ :: (MonadIO m) => MediaSource -> m ()
+createObjectURLSource_ source
+  = liftIO (void (js_createObjectURLSource source))
  
-foreign import javascript unsafe "$1[\"href\"] = $2;" js_setHref ::
+foreign import javascript safe "$1[\"href\"] = $2;" js_setHref ::
         URL -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.href Mozilla URL.href documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/URLSearchParams.hs b/src/GHCJS/DOM/JSFFI/Generated/URLSearchParams.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/URLSearchParams.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/URLSearchParams.hs
@@ -26,10 +26,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe
+foreign import javascript safe
         "new window[\"URLSearchParams\"]($1)" js_newURLSearchParams ::
         URLSearchParamsInit -> IO URLSearchParams
 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/UserMessageHandler.hs b/src/GHCJS/DOM/JSFFI/Generated/UserMessageHandler.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/UserMessageHandler.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/UserMessageHandler.hs
@@ -23,10 +23,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"postMessage\"]($2)"
+foreign import javascript safe "$1[\"postMessage\"]($2)"
         js_postMessage ::
         UserMessageHandler -> SerializedScriptValue -> IO ()
 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VTTCue.hs b/src/GHCJS/DOM/JSFFI/Generated/VTTCue.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/VTTCue.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/VTTCue.hs
@@ -30,7 +30,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
@@ -55,7 +55,7 @@
 getCueAsHTML_ :: (MonadIO m) => VTTCue -> m ()
 getCueAsHTML_ self = liftIO (void (js_getCueAsHTML self))
  
-foreign import javascript unsafe "$1[\"vertical\"] = $2;"
+foreign import javascript safe "$1[\"vertical\"] = $2;"
         js_setVertical :: VTTCue -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.vertical Mozilla VTTCue.vertical documentation> 
@@ -85,7 +85,7 @@
 getSnapToLines :: (MonadIO m) => VTTCue -> m Bool
 getSnapToLines self = liftIO (js_getSnapToLines self)
  
-foreign import javascript unsafe "$1[\"line\"] = $2;" js_setLine ::
+foreign import javascript safe "$1[\"line\"] = $2;" js_setLine ::
         VTTCue -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.line Mozilla VTTCue.line documentation> 
@@ -99,7 +99,7 @@
 getLine :: (MonadIO m) => VTTCue -> m Double
 getLine self = liftIO (js_getLine self)
  
-foreign import javascript unsafe "$1[\"position\"] = $2;"
+foreign import javascript safe "$1[\"position\"] = $2;"
         js_setPosition :: VTTCue -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.position Mozilla VTTCue.position documentation> 
@@ -113,7 +113,7 @@
 getPosition :: (MonadIO m) => VTTCue -> m Double
 getPosition self = liftIO (js_getPosition self)
  
-foreign import javascript unsafe "$1[\"size\"] = $2;" js_setSize ::
+foreign import javascript safe "$1[\"size\"] = $2;" js_setSize ::
         VTTCue -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.size Mozilla VTTCue.size documentation> 
@@ -127,8 +127,8 @@
 getSize :: (MonadIO m) => VTTCue -> m Double
 getSize self = liftIO (js_getSize self)
  
-foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
-        :: VTTCue -> JSString -> IO ()
+foreign import javascript safe "$1[\"align\"] = $2;" js_setAlign ::
+        VTTCue -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.align Mozilla VTTCue.align documentation> 
 setAlign :: (MonadIO m, ToJSString val) => VTTCue -> val -> m ()
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VTTRegion.hs b/src/GHCJS/DOM/JSFFI/Generated/VTTRegion.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/VTTRegion.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/VTTRegion.hs
@@ -31,7 +31,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"VTTRegion\"]()"
@@ -62,8 +62,8 @@
 getId :: (MonadIO m, FromJSString result) => VTTRegion -> m result
 getId self = liftIO (fromJSString <$> (js_getId self))
  
-foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
-        :: VTTRegion -> Double -> IO ()
+foreign import javascript safe "$1[\"width\"] = $2;" js_setWidth ::
+        VTTRegion -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.width Mozilla VTTRegion.width documentation> 
 setWidth :: (MonadIO m) => VTTRegion -> Double -> m ()
@@ -76,8 +76,8 @@
 getWidth :: (MonadIO m) => VTTRegion -> m Double
 getWidth self = liftIO (js_getWidth self)
  
-foreign import javascript unsafe "$1[\"height\"] = $2;"
-        js_setHeight :: VTTRegion -> Int -> IO ()
+foreign import javascript safe "$1[\"height\"] = $2;" js_setHeight
+        :: VTTRegion -> Int -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.height Mozilla VTTRegion.height documentation> 
 setHeight :: (MonadIO m) => VTTRegion -> Int -> m ()
@@ -90,7 +90,7 @@
 getHeight :: (MonadIO m) => VTTRegion -> m Int
 getHeight self = liftIO (js_getHeight self)
  
-foreign import javascript unsafe "$1[\"regionAnchorX\"] = $2;"
+foreign import javascript safe "$1[\"regionAnchorX\"] = $2;"
         js_setRegionAnchorX :: VTTRegion -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.regionAnchorX Mozilla VTTRegion.regionAnchorX documentation> 
@@ -104,7 +104,7 @@
 getRegionAnchorX :: (MonadIO m) => VTTRegion -> m Double
 getRegionAnchorX self = liftIO (js_getRegionAnchorX self)
  
-foreign import javascript unsafe "$1[\"regionAnchorY\"] = $2;"
+foreign import javascript safe "$1[\"regionAnchorY\"] = $2;"
         js_setRegionAnchorY :: VTTRegion -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.regionAnchorY Mozilla VTTRegion.regionAnchorY documentation> 
@@ -118,7 +118,7 @@
 getRegionAnchorY :: (MonadIO m) => VTTRegion -> m Double
 getRegionAnchorY self = liftIO (js_getRegionAnchorY self)
  
-foreign import javascript unsafe "$1[\"viewportAnchorX\"] = $2;"
+foreign import javascript safe "$1[\"viewportAnchorX\"] = $2;"
         js_setViewportAnchorX :: VTTRegion -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.viewportAnchorX Mozilla VTTRegion.viewportAnchorX documentation> 
@@ -133,7 +133,7 @@
 getViewportAnchorX :: (MonadIO m) => VTTRegion -> m Double
 getViewportAnchorX self = liftIO (js_getViewportAnchorX self)
  
-foreign import javascript unsafe "$1[\"viewportAnchorY\"] = $2;"
+foreign import javascript safe "$1[\"viewportAnchorY\"] = $2;"
         js_setViewportAnchorY :: VTTRegion -> Double -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.viewportAnchorY Mozilla VTTRegion.viewportAnchorY documentation> 
@@ -148,8 +148,8 @@
 getViewportAnchorY :: (MonadIO m) => VTTRegion -> m Double
 getViewportAnchorY self = liftIO (js_getViewportAnchorY self)
  
-foreign import javascript unsafe "$1[\"scroll\"] = $2;"
-        js_setScroll :: VTTRegion -> JSString -> IO ()
+foreign import javascript safe "$1[\"scroll\"] = $2;" js_setScroll
+        :: VTTRegion -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.scroll Mozilla VTTRegion.scroll documentation> 
 setScroll ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VTTRegionList.hs b/src/GHCJS/DOM/JSFFI/Generated/VTTRegionList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/VTTRegionList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/VTTRegionList.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ValidityState.hs b/src/GHCJS/DOM/JSFFI/Generated/ValidityState.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/ValidityState.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/ValidityState.hs
@@ -28,7 +28,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "($1[\"valueMissing\"] ? 1 : 0)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoPlaybackQuality.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoPlaybackQuality.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/VideoPlaybackQuality.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoPlaybackQuality.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"creationTime\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoTrack.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/VideoTrack.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoTrack.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"id\"]" js_getId ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoTrackList.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoTrackList.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/VideoTrackList.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoTrackList.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[$2]" js_item ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VoidCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/VoidCallback.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/VoidCallback.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/VoidCallback.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VoidCallback Mozilla VoidCallback documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WaveShaperNode.hs b/src/GHCJS/DOM/JSFFI/Generated/WaveShaperNode.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WaveShaperNode.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WaveShaperNode.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"curve\"] = $2;" js_setCurve
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGL2RenderingContext.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGL2RenderingContext.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGL2RenderingContext.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGL2RenderingContext.hs
@@ -239,7 +239,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"bufferData\"]($2, $3, $4)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLActiveInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLActiveInfo.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLActiveInfo.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLActiveInfo.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"size\"]" js_getSize ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureATC.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureATC.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureATC.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureATC.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern COMPRESSED_RGB_ATC_WEBGL = 35986
 pattern COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 35987
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTexturePVRTC.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTexturePVRTC.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTexturePVRTC.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTexturePVRTC.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840
 pattern COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 35841
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureS3TC.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureS3TC.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureS3TC.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureS3TC.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern COMPRESSED_RGB_S3TC_DXT1_EXT = 33776
 pattern COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLContextEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLContextEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLContextEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLContextEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugRendererInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugRendererInfo.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugRendererInfo.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugRendererInfo.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern UNMASKED_VENDOR_WEBGL = 37445
 pattern UNMASKED_RENDERER_WEBGL = 37446
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugShaders.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugShaders.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugShaders.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugShaders.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLDepthTexture.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLDepthTexture.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLDepthTexture.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLDepthTexture.hs
@@ -23,6 +23,6 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern UNSIGNED_INT_24_8_WEBGL = 34042
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLDrawBuffers.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLDrawBuffers.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLDrawBuffers.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLDrawBuffers.hs
@@ -41,7 +41,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"drawBuffersWEBGL\"]($2)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLLoseContext.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLLoseContext.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLLoseContext.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLLoseContext.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"loseContext\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderingContextBase.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderingContextBase.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderingContextBase.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderingContextBase.hs
@@ -258,7 +258,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"activeTexture\"]($2)"
@@ -2192,7 +2192,7 @@
          type'
          (maybeToOptional (fmap toArrayBufferView pixels)))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"texImage2D\"]($2, $3, $4, $5,\n$6, $7)" js_texImage2D ::
         WebGLRenderingContextBase ->
           GLenum ->
@@ -2248,7 +2248,7 @@
          type'
          (maybeToOptional (fmap toArrayBufferView pixels)))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"texSubImage2D\"]($2, $3, $4,\n$5, $6, $7, $8)"
         js_texSubImage2D ::
         WebGLRenderingContextBase ->
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLShaderPrecisionFormat.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLShaderPrecisionFormat.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGLShaderPrecisionFormat.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLShaderPrecisionFormat.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"rangeMin\"]" js_getRangeMin
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUBuffer.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUBuffer.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUBuffer.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUBuffer.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandBuffer.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandBuffer.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandBuffer.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandBuffer.hs
@@ -28,7 +28,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandQueue.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandQueue.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandQueue.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandQueue.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"createCommandBuffer\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUComputeCommandEncoder.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUComputeCommandEncoder.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUComputeCommandEncoder.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUComputeCommandEncoder.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilDescriptor.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilDescriptor.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilDescriptor.hs
@@ -28,7 +28,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilState.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilState.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilState.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilState.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"label\"] = $2;" js_setLabel
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUDrawable.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUDrawable.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUDrawable.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUDrawable.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"texture\"]" js_getTexture ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUFunction.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUFunction.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUFunction.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUFunction.hs
@@ -22,7 +22,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"name\"]" js_getName ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPULibrary.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPULibrary.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPULibrary.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPULibrary.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"functionWithName\"]($2)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderCommandEncoder.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderCommandEncoder.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderCommandEncoder.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderCommandEncoder.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassAttachmentDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassAttachmentDescriptor.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassAttachmentDescriptor.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassAttachmentDescriptor.hs
@@ -29,7 +29,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"texture\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassColorAttachmentDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassColorAttachmentDescriptor.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassColorAttachmentDescriptor.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassColorAttachmentDescriptor.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"clearColor\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDepthAttachmentDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDepthAttachmentDescriptor.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDepthAttachmentDescriptor.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDepthAttachmentDescriptor.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"clearDepth\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDescriptor.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDescriptor.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDescriptor.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineColorAttachmentDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineColorAttachmentDescriptor.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineColorAttachmentDescriptor.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineColorAttachmentDescriptor.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"pixelFormat\"] = $2;"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineDescriptor.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineDescriptor.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineDescriptor.hs
@@ -33,7 +33,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineState.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineState.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineState.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineState.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"label\"] = $2;" js_setLabel
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderingContext.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderingContext.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderingContext.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderingContext.hs
@@ -58,7 +58,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"createLibrary\"]($2)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUTexture.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUTexture.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUTexture.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUTexture.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUTextureDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUTextureDescriptor.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebGPUTextureDescriptor.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUTextureDescriptor.hs
@@ -30,7 +30,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitAnimationEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitAnimationEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitAnimationEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitAnimationEvent.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSMatrix.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSMatrix.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSMatrix.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSMatrix.hs
@@ -40,10 +40,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe
+foreign import javascript safe
         "new window[\"WebKitCSSMatrix\"]($1)" js_newWebKitCSSMatrix ::
         Optional JSString -> IO WebKitCSSMatrix
 
@@ -54,7 +54,7 @@
 newWebKitCSSMatrix cssValue
   = liftIO (js_newWebKitCSSMatrix (toOptionalJSString cssValue))
  
-foreign import javascript unsafe "$1[\"setMatrixValue\"]($2)"
+foreign import javascript safe "$1[\"setMatrixValue\"]($2)"
         js_setMatrixValue :: WebKitCSSMatrix -> Optional JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.setMatrixValue Mozilla WebKitCSSMatrix.setMatrixValue documentation> 
@@ -81,7 +81,7 @@
 multiply_ self secondMatrix
   = liftIO (void (js_multiply self (maybeToOptional secondMatrix)))
  
-foreign import javascript unsafe "$1[\"inverse\"]()" js_inverse ::
+foreign import javascript safe "$1[\"inverse\"]()" js_inverse ::
         WebKitCSSMatrix -> IO WebKitCSSMatrix
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.inverse Mozilla WebKitCSSMatrix.inverse documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSRegionRule.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSRegionRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSRegionRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSRegionRule.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"cssRules\"]" js_getCssRules
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSViewportRule.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSViewportRule.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSViewportRule.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSViewportRule.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"style\"]" js_getStyle ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyError.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyError.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyError.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyError.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 pattern MEDIA_KEYERR_UNKNOWN = 1
 pattern MEDIA_KEYERR_CLIENT = 2
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyMessageEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyMessageEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyMessageEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyMessageEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyNeededEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyNeededEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyNeededEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyNeededEvent.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeySession.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeySession.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeySession.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeySession.hs
@@ -25,10 +25,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"update\"]($2)" js_update ::
+foreign import javascript safe "$1[\"update\"]($2)" js_update ::
         WebKitMediaKeySession -> Uint8Array -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.update Mozilla WebKitMediaKeySession.update documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeys.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeys.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeys.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeys.hs
@@ -25,10 +25,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe
+foreign import javascript safe
         "new window[\"WebKitMediaKeys\"]($1)" js_newWebKitMediaKeys ::
         JSString -> IO WebKitMediaKeys
 
@@ -38,7 +38,7 @@
 newWebKitMediaKeys keySystem
   = liftIO (js_newWebKitMediaKeys (toJSString keySystem))
  
-foreign import javascript unsafe "$1[\"createSession\"]($2, $3)"
+foreign import javascript safe "$1[\"createSession\"]($2, $3)"
         js_createSession ::
         WebKitMediaKeys ->
           JSString -> Uint8Array -> IO WebKitMediaKeySession
@@ -61,26 +61,26 @@
          (js_createSession self (toJSString type') (toUint8Array initData)))
  
 foreign import javascript unsafe
-        "($1[\"isTypeSupported\"]($2,\n$3) ? 1 : 0)" js_isTypeSupported ::
-        WebKitMediaKeys -> JSString -> Optional JSString -> IO Bool
+        "(window[\"WebKitMediaKeys\"][\"isTypeSupported\"]($1,\n$2) ? 1 : 0)"
+        js_isTypeSupported :: JSString -> Optional JSString -> IO Bool
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.isTypeSupported Mozilla WebKitMediaKeys.isTypeSupported documentation> 
 isTypeSupported ::
                 (MonadIO m, ToJSString keySystem, ToJSString type') =>
-                  WebKitMediaKeys -> keySystem -> Maybe type' -> m Bool
-isTypeSupported self keySystem type'
+                  keySystem -> Maybe type' -> m Bool
+isTypeSupported keySystem type'
   = liftIO
-      (js_isTypeSupported self (toJSString keySystem)
+      (js_isTypeSupported (toJSString keySystem)
          (toOptionalJSString type'))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.isTypeSupported Mozilla WebKitMediaKeys.isTypeSupported documentation> 
 isTypeSupported_ ::
                  (MonadIO m, ToJSString keySystem, ToJSString type') =>
-                   WebKitMediaKeys -> keySystem -> Maybe type' -> m ()
-isTypeSupported_ self keySystem type'
+                   keySystem -> Maybe type' -> m ()
+isTypeSupported_ keySystem type'
   = liftIO
       (void
-         (js_isTypeSupported self (toJSString keySystem)
+         (js_isTypeSupported (toJSString keySystem)
             (toOptionalJSString type')))
  
 foreign import javascript unsafe "$1[\"keySystem\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitNamedFlow.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitNamedFlow.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitNamedFlow.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitNamedFlow.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"getRegionsByContent\"]($2)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitNamespace.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitNamespace.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitNamespace.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitNamespace.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"messageHandlers\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitPlaybackTargetAvailabilityEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitPlaybackTargetAvailabilityEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitPlaybackTargetAvailabilityEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitPlaybackTargetAvailabilityEvent.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitPoint.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitPoint.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitPoint.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitPoint.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitSubtleCrypto.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitSubtleCrypto.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitSubtleCrypto.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitSubtleCrypto.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript interruptible
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitTransitionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitTransitionEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebKitTransitionEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitTransitionEvent.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebSocket.hs b/src/GHCJS/DOM/JSFFI/Generated/WebSocket.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WebSocket.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebSocket.hs
@@ -32,12 +32,11 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe
-        "new window[\"WebSocket\"]($1, $2)" js_newWebSocket ::
-        JSString -> JSVal -> IO WebSocket
+foreign import javascript safe "new window[\"WebSocket\"]($1, $2)"
+        js_newWebSocket :: JSString -> JSVal -> IO WebSocket
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket Mozilla WebSocket documentation> 
 newWebSocket ::
@@ -48,9 +47,8 @@
       (toJSVal protocols >>=
          \ protocols' -> js_newWebSocket (toJSString url) protocols')
  
-foreign import javascript unsafe
-        "new window[\"WebSocket\"]($1, $2)" js_newWebSocket' ::
-        JSString -> JSString -> IO WebSocket
+foreign import javascript safe "new window[\"WebSocket\"]($1, $2)"
+        js_newWebSocket' :: JSString -> JSString -> IO WebSocket
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket Mozilla WebSocket documentation> 
 newWebSocket' ::
@@ -59,7 +57,7 @@
 newWebSocket' url protocol
   = liftIO (js_newWebSocket' (toJSString url) (toJSString protocol))
  
-foreign import javascript unsafe "$1[\"send\"]($2)" js_send ::
+foreign import javascript safe "$1[\"send\"]($2)" js_send ::
         WebSocket -> ArrayBuffer -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
@@ -67,7 +65,7 @@
      (MonadIO m, IsArrayBuffer data') => WebSocket -> data' -> m ()
 send self data' = liftIO (js_send self (toArrayBuffer data'))
  
-foreign import javascript unsafe "$1[\"send\"]($2)" js_sendView ::
+foreign import javascript safe "$1[\"send\"]($2)" js_sendView ::
         WebSocket -> ArrayBufferView -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
@@ -76,15 +74,15 @@
 sendView self data'
   = liftIO (js_sendView self (toArrayBufferView data'))
  
-foreign import javascript unsafe "$1[\"send\"]($2)" js_sendBlob ::
+foreign import javascript safe "$1[\"send\"]($2)" js_sendBlob ::
         WebSocket -> Blob -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
 sendBlob :: (MonadIO m, IsBlob data') => WebSocket -> data' -> m ()
 sendBlob self data' = liftIO (js_sendBlob self (toBlob data'))
  
-foreign import javascript unsafe "$1[\"send\"]($2)" js_sendString
-        :: WebSocket -> JSString -> IO ()
+foreign import javascript safe "$1[\"send\"]($2)" js_sendString ::
+        WebSocket -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
 sendString ::
@@ -92,8 +90,8 @@
 sendString self data'
   = liftIO (js_sendString self (toJSString data'))
  
-foreign import javascript unsafe "$1[\"close\"]($2, $3)" js_close
-        :: WebSocket -> Optional Word -> Optional JSString -> IO ()
+foreign import javascript safe "$1[\"close\"]($2, $3)" js_close ::
+        WebSocket -> Optional Word -> Optional JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.close Mozilla WebSocket.close documentation> 
 close ::
@@ -130,19 +128,19 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onopen Mozilla WebSocket.onopen documentation> 
 open :: EventName WebSocket Event
-open = unsafeEventName (toJSString "open")
+open = unsafeEventNameAsync (toJSString "open")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onmessage Mozilla WebSocket.onmessage documentation> 
 message :: EventName WebSocket MessageEvent
-message = unsafeEventName (toJSString "message")
+message = unsafeEventNameAsync (toJSString "message")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onerror Mozilla WebSocket.onerror documentation> 
 error :: EventName WebSocket UIEvent
-error = unsafeEventName (toJSString "error")
+error = unsafeEventNameAsync (toJSString "error")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onclose Mozilla WebSocket.onclose documentation> 
 closeEvent :: EventName WebSocket CloseEvent
-closeEvent = unsafeEventName (toJSString "close")
+closeEvent = unsafeEventNameAsync (toJSString "close")
  
 foreign import javascript unsafe "$1[\"protocol\"]" js_getProtocol
         :: WebSocket -> IO (Nullable JSString)
@@ -192,7 +190,7 @@
 getExtensionsUnchecked self
   = liftIO (fromJust . fromMaybeJSString <$> (js_getExtensions self))
  
-foreign import javascript unsafe "$1[\"binaryType\"] = $2;"
+foreign import javascript safe "$1[\"binaryType\"] = $2;"
         js_setBinaryType :: WebSocket -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.binaryType Mozilla WebSocket.binaryType documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WheelEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WheelEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WheelEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WheelEvent.hs
@@ -30,7 +30,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Window.hs b/src/GHCJS/DOM/JSFFI/Generated/Window.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Window.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Window.hs
@@ -95,7 +95,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"decodeURI\"]($2)"
@@ -187,7 +187,7 @@
          (toJSVal input >>= \ input' -> js_fetch self input'
             (maybeToOptional init)))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"openDatabase\"]($2, $3, $4,\n$5, $6)" js_openDatabase ::
         Window ->
           JSString ->
@@ -454,7 +454,7 @@
 cancelAnimationFrame self handle
   = liftIO (js_cancelAnimationFrame self handle)
  
-foreign import javascript unsafe "$1[\"postMessage\"]($2, $3, $4)"
+foreign import javascript safe "$1[\"postMessage\"]($2, $3, $4)"
         js_postMessage :: Window -> JSVal -> JSString -> JSVal -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage Mozilla Window.postMessage documentation> 
@@ -814,7 +814,7 @@
             (maybeToOptional (fmap toNode node))
             (maybeToOptional p)))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"collectMatchingElementsInFlatTree\"]($2,\n$3)"
         js_collectMatchingElementsInFlatTree ::
         Window -> Node -> JSString -> IO NodeList
@@ -838,7 +838,7 @@
          (js_collectMatchingElementsInFlatTree self (toNode scope)
             (toJSString selectors)))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"matchingElementInFlatTree\"]($2,\n$3)"
         js_matchingElementInFlatTree ::
         Window -> Node -> JSString -> IO (Nullable Element)
@@ -1138,14 +1138,14 @@
 getApplicationCache :: (MonadIO m) => Window -> m ApplicationCache
 getApplicationCache self = liftIO (js_getApplicationCache self)
  
-foreign import javascript unsafe "$1[\"sessionStorage\"]"
+foreign import javascript safe "$1[\"sessionStorage\"]"
         js_getSessionStorage :: Window -> IO Storage
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.sessionStorage Mozilla Window.sessionStorage documentation> 
 getSessionStorage :: (MonadIO m) => Window -> m Storage
 getSessionStorage self = liftIO (js_getSessionStorage self)
  
-foreign import javascript unsafe "$1[\"localStorage\"]"
+foreign import javascript safe "$1[\"localStorage\"]"
         js_getLocalStorage :: Window -> IO Storage
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.localStorage Mozilla Window.localStorage documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WindowEventHandlers.hs b/src/GHCJS/DOM/JSFFI/Generated/WindowEventHandlers.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WindowEventHandlers.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WindowEventHandlers.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onbeforeunload Mozilla WindowEventHandlers.onbeforeunload documentation> 
@@ -51,7 +51,7 @@
 message ::
         (IsWindowEventHandlers self, IsEventTarget self) =>
           EventName self MessageEvent
-message = unsafeEventName (toJSString "message")
+message = unsafeEventNameAsync (toJSString "message")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onoffline Mozilla WindowEventHandlers.onoffline documentation> 
 offline ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WindowOrWorkerGlobalScope.hs b/src/GHCJS/DOM/JSFFI/Generated/WindowOrWorkerGlobalScope.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WindowOrWorkerGlobalScope.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WindowOrWorkerGlobalScope.hs
@@ -27,7 +27,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"setTimeout\"]($2, $3)"
@@ -110,7 +110,7 @@
       (js_clearInterval (toWindowOrWorkerGlobalScope self)
          (maybeToOptional handle))
  
-foreign import javascript unsafe "$1[\"atob\"]($2)" js_atob ::
+foreign import javascript safe "$1[\"atob\"]($2)" js_atob ::
         WindowOrWorkerGlobalScope -> JSString -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.atob Mozilla WindowOrWorkerGlobalScope.atob documentation> 
@@ -132,7 +132,7 @@
       (void
          (js_atob (toWindowOrWorkerGlobalScope self) (toJSString string)))
  
-foreign import javascript unsafe "$1[\"btoa\"]($2)" js_btoa ::
+foreign import javascript safe "$1[\"btoa\"]($2)" js_btoa ::
         WindowOrWorkerGlobalScope -> JSString -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.btoa Mozilla WindowOrWorkerGlobalScope.btoa documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Worker.hs b/src/GHCJS/DOM/JSFFI/Generated/Worker.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/Worker.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/Worker.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"Worker\"]($1)"
@@ -41,7 +41,7 @@
 terminate :: (MonadIO m) => Worker -> m ()
 terminate self = liftIO (js_terminate self)
  
-foreign import javascript unsafe "$1[\"postMessage\"]($2, $3)"
+foreign import javascript safe "$1[\"postMessage\"]($2, $3)"
         js_postMessage :: Worker -> JSVal -> JSVal -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker.postMessage Mozilla Worker.postMessage documentation> 
@@ -57,4 +57,4 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker.onmessage Mozilla Worker.onmessage documentation> 
 message :: EventName Worker MessageEvent
-message = unsafeEventName (toJSString "message")
+message = unsafeEventNameAsync (toJSString "message")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WorkerGlobalScope.hs b/src/GHCJS/DOM/JSFFI/Generated/WorkerGlobalScope.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WorkerGlobalScope.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WorkerGlobalScope.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript interruptible
@@ -64,7 +64,7 @@
 close :: (MonadIO m, IsWorkerGlobalScope self) => self -> m ()
 close self = liftIO (js_close (toWorkerGlobalScope self))
  
-foreign import javascript unsafe "$1[\"importScripts\"]($2)"
+foreign import javascript safe "$1[\"importScripts\"]($2)"
         js_importScripts :: WorkerGlobalScope -> JSVal -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.importScripts Mozilla WorkerGlobalScope.importScripts documentation> 
@@ -107,7 +107,7 @@
 error ::
       (IsWorkerGlobalScope self, IsEventTarget self) =>
         EventName self UIEvent
-error = unsafeEventName (toJSString "error")
+error = unsafeEventNameAsync (toJSString "error")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.onoffline Mozilla WorkerGlobalScope.onoffline documentation> 
 offline ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WorkerLocation.hs b/src/GHCJS/DOM/JSFFI/Generated/WorkerLocation.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WorkerLocation.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WorkerLocation.hs
@@ -26,7 +26,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"href\"]" js_getHref ::
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WorkerNavigator.hs b/src/GHCJS/DOM/JSFFI/Generated/WorkerNavigator.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WorkerNavigator.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WorkerNavigator.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"webkitTemporaryStorage\"]"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WritableStream.hs b/src/GHCJS/DOM/JSFFI/Generated/WritableStream.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/WritableStream.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/WritableStream.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"WritableStream\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequest.hs b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequest.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequest.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequest.hs
@@ -39,7 +39,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"XMLHttpRequest\"]()"
@@ -49,8 +49,8 @@
 newXMLHttpRequest :: (MonadIO m) => m XMLHttpRequest
 newXMLHttpRequest = liftIO (js_newXMLHttpRequest)
  
-foreign import javascript unsafe "$1[\"open\"]($2, $3)"
-        js_openSimple :: XMLHttpRequest -> JSString -> JSString -> IO ()
+foreign import javascript safe "$1[\"open\"]($2, $3)" js_openSimple
+        :: XMLHttpRequest -> JSString -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.open Mozilla XMLHttpRequest.open documentation> 
 openSimple ::
@@ -59,7 +59,7 @@
 openSimple self method url
   = liftIO (js_openSimple self (toJSString method) (toJSString url))
  
-foreign import javascript unsafe "$1[\"open\"]($2, $3, $4, $5, $6)"
+foreign import javascript safe "$1[\"open\"]($2, $3, $4, $5, $6)"
         js_open ::
         XMLHttpRequest ->
           JSString ->
@@ -77,7 +77,7 @@
          (toOptionalJSString user)
          (toOptionalJSString password))
  
-foreign import javascript unsafe "$1[\"setRequestHeader\"]($2, $3)"
+foreign import javascript safe "$1[\"setRequestHeader\"]($2, $3)"
         js_setRequestHeader ::
         XMLHttpRequest -> JSString -> JSString -> IO ()
 
@@ -89,7 +89,7 @@
   = liftIO
       (js_setRequestHeader self (toJSString header) (toJSString value))
  
-foreign import javascript unsafe "$1[\"send\"]($2)" js_send ::
+foreign import javascript safe "$1[\"send\"]($2)" js_send ::
         XMLHttpRequest -> Optional XMLHttpRequestBody -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.send Mozilla XMLHttpRequest.send documentation> 
@@ -161,7 +161,7 @@
 getAllResponseHeaders_ self
   = liftIO (void (js_getAllResponseHeaders self))
  
-foreign import javascript unsafe "$1[\"overrideMimeType\"]($2)"
+foreign import javascript safe "$1[\"overrideMimeType\"]($2)"
         js_overrideMimeType :: XMLHttpRequest -> JSString -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.overrideMimeType Mozilla XMLHttpRequest.overrideMimeType documentation> 
@@ -177,7 +177,8 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.onreadystatechange Mozilla XMLHttpRequest.onreadystatechange documentation> 
 readyStateChange :: EventName XMLHttpRequest Event
-readyStateChange = unsafeEventName (toJSString "readystatechange")
+readyStateChange
+  = unsafeEventNameAsync (toJSString "readystatechange")
  
 foreign import javascript unsafe "$1[\"readyState\"]"
         js_getReadyState :: XMLHttpRequest -> IO Word
@@ -186,7 +187,7 @@
 getReadyState :: (MonadIO m) => XMLHttpRequest -> m Word
 getReadyState self = liftIO (js_getReadyState self)
  
-foreign import javascript unsafe "$1[\"timeout\"] = $2;"
+foreign import javascript safe "$1[\"timeout\"] = $2;"
         js_setTimeout :: XMLHttpRequest -> Word -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.timeout Mozilla XMLHttpRequest.timeout documentation> 
@@ -200,7 +201,7 @@
 getTimeout :: (MonadIO m) => XMLHttpRequest -> m Word
 getTimeout self = liftIO (js_getTimeout self)
  
-foreign import javascript unsafe "$1[\"withCredentials\"] = $2;"
+foreign import javascript safe "$1[\"withCredentials\"] = $2;"
         js_setWithCredentials :: XMLHttpRequest -> Bool -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.withCredentials Mozilla XMLHttpRequest.withCredentials documentation> 
@@ -249,7 +250,7 @@
 getStatusText self
   = liftIO (fromJSString <$> (js_getStatusText self))
  
-foreign import javascript unsafe "$1[\"responseType\"] = $2;"
+foreign import javascript safe "$1[\"responseType\"] = $2;"
         js_setResponseType :: XMLHttpRequest -> JSVal -> IO ()
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseType Mozilla XMLHttpRequest.responseType documentation> 
@@ -274,7 +275,7 @@
 getResponse :: (MonadIO m) => XMLHttpRequest -> m JSVal
 getResponse self = liftIO (js_getResponse self)
  
-foreign import javascript unsafe "$1[\"responseText\"]"
+foreign import javascript safe "$1[\"responseText\"]"
         js_getResponseText :: XMLHttpRequest -> IO (Nullable JSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseText Mozilla XMLHttpRequest.responseText documentation> 
@@ -300,7 +301,7 @@
   = liftIO
       (fromJust . fromMaybeJSString <$> (js_getResponseText self))
  
-foreign import javascript unsafe "$1[\"responseXML\"]"
+foreign import javascript safe "$1[\"responseXML\"]"
         js_getResponseXML :: XMLHttpRequest -> IO (Nullable Document)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseXML Mozilla XMLHttpRequest.responseXML documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestEventTarget.hs b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestEventTarget.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestEventTarget.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestEventTarget.hs
@@ -24,47 +24,47 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.onloadstart Mozilla XMLHttpRequestEventTarget.onloadstart documentation> 
 loadStart ::
           (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
             EventName self ProgressEvent
-loadStart = unsafeEventName (toJSString "loadstart")
+loadStart = unsafeEventNameAsync (toJSString "loadstart")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.onprogress Mozilla XMLHttpRequestEventTarget.onprogress documentation> 
 progress ::
          (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
            EventName self XMLHttpRequestProgressEvent
-progress = unsafeEventName (toJSString "progress")
+progress = unsafeEventNameAsync (toJSString "progress")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.onabort Mozilla XMLHttpRequestEventTarget.onabort documentation> 
 abortEvent ::
            (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
              EventName self XMLHttpRequestProgressEvent
-abortEvent = unsafeEventName (toJSString "abort")
+abortEvent = unsafeEventNameAsync (toJSString "abort")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.onerror Mozilla XMLHttpRequestEventTarget.onerror documentation> 
 error ::
       (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
         EventName self XMLHttpRequestProgressEvent
-error = unsafeEventName (toJSString "error")
+error = unsafeEventNameAsync (toJSString "error")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.onload Mozilla XMLHttpRequestEventTarget.onload documentation> 
 load ::
      (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
        EventName self XMLHttpRequestProgressEvent
-load = unsafeEventName (toJSString "load")
+load = unsafeEventNameAsync (toJSString "load")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.ontimeout Mozilla XMLHttpRequestEventTarget.ontimeout documentation> 
 timeout ::
         (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
           EventName self ProgressEvent
-timeout = unsafeEventName (toJSString "timeout")
+timeout = unsafeEventNameAsync (toJSString "timeout")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.onloadend Mozilla XMLHttpRequestEventTarget.onloadend documentation> 
 loadEnd ::
         (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
           EventName self ProgressEvent
-loadEnd = unsafeEventName (toJSString "loadend")
+loadEnd = unsafeEventNameAsync (toJSString "loadend")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestProgressEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestProgressEvent.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestProgressEvent.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestProgressEvent.hs
@@ -23,7 +23,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"position\"]" js_getPosition
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XMLSerializer.hs b/src/GHCJS/DOM/JSFFI/Generated/XMLSerializer.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/XMLSerializer.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/XMLSerializer.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"XMLSerializer\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XPathEvaluator.hs b/src/GHCJS/DOM/JSFFI/Generated/XPathEvaluator.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/XPathEvaluator.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/XPathEvaluator.hs
@@ -25,7 +25,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"XPathEvaluator\"]()"
@@ -35,7 +35,7 @@
 newXPathEvaluator :: (MonadIO m) => m XPathEvaluator
 newXPathEvaluator = liftIO (js_newXPathEvaluator)
  
-foreign import javascript unsafe "$1[\"createExpression\"]($2, $3)"
+foreign import javascript safe "$1[\"createExpression\"]($2, $3)"
         js_createExpression ::
         XPathEvaluator ->
           Optional JSString -> Optional XPathNSResolver -> IO XPathExpression
@@ -83,7 +83,7 @@
          (js_createNSResolver self
             (maybeToOptional (fmap toNode nodeResolver))))
  
-foreign import javascript unsafe
+foreign import javascript safe
         "$1[\"evaluate\"]($2, $3, $4, $5,\n$6)" js_evaluate ::
         XPathEvaluator ->
           Optional JSString ->
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XPathException.hs b/src/GHCJS/DOM/JSFFI/Generated/XPathException.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/XPathException.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/XPathException.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"toString\"]()" js_toString
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XPathExpression.hs b/src/GHCJS/DOM/JSFFI/Generated/XPathExpression.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/XPathExpression.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/XPathExpression.hs
@@ -23,10 +23,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"evaluate\"]($2, $3, $4)"
+foreign import javascript safe "$1[\"evaluate\"]($2, $3, $4)"
         js_evaluate ::
         XPathExpression ->
           Optional Node ->
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XPathNSResolver.hs b/src/GHCJS/DOM/JSFFI/Generated/XPathNSResolver.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/XPathNSResolver.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/XPathNSResolver.hs
@@ -24,7 +24,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "$1[\"lookupNamespaceURI\"]($2)"
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XPathResult.hs b/src/GHCJS/DOM/JSFFI/Generated/XPathResult.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/XPathResult.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/XPathResult.hs
@@ -35,10 +35,10 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
-foreign import javascript unsafe "$1[\"iterateNext\"]()"
+foreign import javascript safe "$1[\"iterateNext\"]()"
         js_iterateNext :: XPathResult -> IO Node
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.iterateNext Mozilla XPathResult.iterateNext documentation> 
@@ -49,7 +49,7 @@
 iterateNext_ :: (MonadIO m) => XPathResult -> m ()
 iterateNext_ self = liftIO (void (js_iterateNext self))
  
-foreign import javascript unsafe "$1[\"snapshotItem\"]($2)"
+foreign import javascript safe "$1[\"snapshotItem\"]($2)"
         js_snapshotItem :: XPathResult -> Optional Word -> IO Node
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.snapshotItem Mozilla XPathResult.snapshotItem documentation> 
@@ -79,14 +79,14 @@
 getResultType :: (MonadIO m) => XPathResult -> m Word
 getResultType self = liftIO (js_getResultType self)
  
-foreign import javascript unsafe "$1[\"numberValue\"]"
+foreign import javascript safe "$1[\"numberValue\"]"
         js_getNumberValue :: XPathResult -> IO Double
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.numberValue Mozilla XPathResult.numberValue documentation> 
 getNumberValue :: (MonadIO m) => XPathResult -> m Double
 getNumberValue self = liftIO (js_getNumberValue self)
  
-foreign import javascript unsafe "$1[\"stringValue\"]"
+foreign import javascript safe "$1[\"stringValue\"]"
         js_getStringValue :: XPathResult -> IO JSString
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.stringValue Mozilla XPathResult.stringValue documentation> 
@@ -95,14 +95,14 @@
 getStringValue self
   = liftIO (fromJSString <$> (js_getStringValue self))
  
-foreign import javascript unsafe "($1[\"booleanValue\"] ? 1 : 0)"
+foreign import javascript safe "($1[\"booleanValue\"] ? 1 : 0)"
         js_getBooleanValue :: XPathResult -> IO Bool
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.booleanValue Mozilla XPathResult.booleanValue documentation> 
 getBooleanValue :: (MonadIO m) => XPathResult -> m Bool
 getBooleanValue self = liftIO (js_getBooleanValue self)
  
-foreign import javascript unsafe "$1[\"singleNodeValue\"]"
+foreign import javascript safe "$1[\"singleNodeValue\"]"
         js_getSingleNodeValue :: XPathResult -> IO Node
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.singleNodeValue Mozilla XPathResult.singleNodeValue documentation> 
@@ -118,7 +118,7 @@
 getInvalidIteratorState self
   = liftIO (js_getInvalidIteratorState self)
  
-foreign import javascript unsafe "$1[\"snapshotLength\"]"
+foreign import javascript safe "$1[\"snapshotLength\"]"
         js_getSnapshotLength :: XPathResult -> IO Word
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.snapshotLength Mozilla XPathResult.snapshotLength documentation> 
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XSLTProcessor.hs b/src/GHCJS/DOM/JSFFI/Generated/XSLTProcessor.hs
--- a/src/GHCJS/DOM/JSFFI/Generated/XSLTProcessor.hs
+++ b/src/GHCJS/DOM/JSFFI/Generated/XSLTProcessor.hs
@@ -29,7 +29,7 @@
 import Data.Traversable (mapM)
 import GHCJS.DOM.Types
 import Control.Applicative ((<$>))
-import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import GHCJS.DOM.JSFFI.Generated.Enums
  
 foreign import javascript unsafe "new window[\"XSLTProcessor\"]()"
diff --git a/src/GHCJS/DOM/JSFFI/SpeechGrammar.hs b/src/GHCJS/DOM/JSFFI/SpeechGrammar.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/SpeechGrammar.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.SpeechGrammar
+       (newSpeechGrammarList, addFromURI, addFromString,
+        getLength, getSrc, setSrc,
+        getWeight, setWeight, item, item_,
+        SpeechGrammar(..), gTypeSpeechGrammar,
+        SpeechGrammarList(..), gTypeSpeechGrammarList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe
+        "new window[\"webkitSpeechGrammarList\"]()"
+        js_newSpeechGrammarList ::
+        IO SpeechGrammarList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList Mozilla SpeechGrammarList documentation>
+newSpeechGrammarList :: (MonadIO m) => m SpeechGrammarList
+newSpeechGrammarList = liftIO (js_newSpeechGrammarList)
+
+foreign import javascript unsafe
+        "$1[\"addFromURI\"]($2,\n$3)"
+        js_speechGrammarListAddFromURI ::
+        SpeechGrammarList -> JSString
+        -> Optional Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList.addFromURI Mozilla SpeechGrammarList.addFromURI documentation>
+addFromURI :: (MonadIO m, ToJSString grammarURI)
+  => SpeechGrammarList -> grammarURI -> Maybe Double -> m ()
+addFromURI self grammarURI weight
+  = liftIO (js_speechGrammarListAddFromURI self
+            (toJSString grammarURI) (maybeToOptional weight))
+
+foreign import javascript unsafe
+        "$1[\"addFromString\"]($2,\n$3)"
+        js_speechGrammarListAddFromString ::
+        SpeechGrammarList -> JSString
+        -> Optional Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList.addFromString Mozilla SpeechGrammarList.addFromString documentation>
+addFromString :: (MonadIO m, ToJSString grammarStr)
+  => SpeechGrammarList -> grammarStr -> Maybe Double -> m ()
+addFromString self grammarStr weight
+  = liftIO (js_speechGrammarListAddFromString self
+            (toJSString grammarStr) (maybeToOptional weight))
+
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        SpeechGrammarList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList.length Mozilla SpeechGrammarList.length documentation>
+getLength :: (MonadIO m) => SpeechGrammarList -> m Word
+getLength self = liftIO (js_getLength self)
+
+foreign import javascript unsafe "$1[$2]" js_item ::
+        SpeechGrammarList -> Word -> IO SpeechGrammar
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList.item Mozilla SpeechGrammarList.item documentation>
+item :: (MonadIO m) => SpeechGrammarList -> Word -> m SpeechGrammar
+item self index = liftIO (js_item self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList.item Mozilla SpeechGrammarList.item documentation>
+item_ :: (MonadIO m) => SpeechGrammarList -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+
+foreign import javascript unsafe "$1[\"src\"] = $2;" js_setSrc ::
+        SpeechGrammar -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammar.src Mozilla SpeechGrammar.src documentation>
+setSrc ::
+       (MonadIO m, ToJSString val) => SpeechGrammar -> val -> m ()
+setSrc self val = liftIO (js_setSrc self (toJSString val))
+
+foreign import javascript unsafe "$1[\"src\"]" js_getSrc ::
+        SpeechGrammar -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammar.src Mozilla SpeechGrammar.src documentation>
+getSrc ::
+       (MonadIO m, FromJSString result) => SpeechGrammar -> m result
+getSrc self = liftIO (fromJSString <$> (js_getSrc self))
+
+foreign import javascript unsafe "$1[\"weight\"] = $2;"
+        js_setWeight :: SpeechGrammar -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammar.weight Mozilla SpeechGrammar.weight documentation>
+setWeight :: (MonadIO m) => SpeechGrammar -> Double -> m ()
+setWeight self val = liftIO (js_setWeight self val)
+
+foreign import javascript unsafe "$1[\"weight\"]" js_getWeight ::
+        SpeechGrammar -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammar.weight Mozilla SpeechGrammar.weight documentation>
+getWeight ::
+          (MonadIO m) => SpeechGrammar -> m Double
+getWeight self = liftIO (js_getWeight self)
diff --git a/src/GHCJS/DOM/JSFFI/SpeechRecognition.hs b/src/GHCJS/DOM/JSFFI/SpeechRecognition.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/SpeechRecognition.hs
@@ -0,0 +1,225 @@
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.SpeechRecognition
+       (newSpeechRecognition, getMaxAlternatives, setMaxAlternatives,
+        getGrammars, setGrammars, getLang, setLang,
+        getInterimResults, setInterimResults,
+        getContinuous, setContinuous,
+        audiostart, audioend, end, error, nomatch,
+        result, soundstart, soundend, speechstart, speechend, start,
+        abort, startRecognition, stop,
+        SpeechRecognition(..), gTypeSpeechRecognition)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe
+        "new window[\"webkitSpeechRecognition\"]()"
+        js_newSpeechRecognition :: IO SpeechRecognition
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition Mozilla SpeechRecognition documentation>
+newSpeechRecognition :: (MonadIO m) => m SpeechRecognition
+newSpeechRecognition = liftIO (js_newSpeechRecognition)
+
+foreign import javascript unsafe
+        "$1[\"maxAlternatives\"]"
+        js_speechRecognitionGetMaxAlternatives ::
+        SpeechRecognition -> IO (Word)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.maxAlternatives Mozilla SpeechRecognition.maxAlternatives documentation>
+getMaxAlternatives :: (MonadIO m)
+  => SpeechRecognition -> m Word
+getMaxAlternatives self
+  = liftIO (js_speechRecognitionGetMaxAlternatives self)
+
+foreign import javascript unsafe
+        "$1[\"maxAlternatives\"] = $2;"
+        js_speechRecognitionMaxAlternatives ::
+        SpeechRecognition -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.maxAlternatives Mozilla SpeechRecognition.maxAlternatives documentation>
+setMaxAlternatives :: (MonadIO m)
+  => SpeechRecognition -> Word -> m ()
+setMaxAlternatives self maxAlt
+  = liftIO (js_speechRecognitionMaxAlternatives self maxAlt)
+
+foreign import javascript unsafe
+        "$1[\"grammars\"]"
+        js_speechRecognitionGetGrammars ::
+        SpeechRecognition -> IO SpeechGrammarList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.grammars Mozilla SpeechRecognition.grammars documentation>
+getGrammars :: (MonadIO m)
+  => SpeechRecognition -> m (SpeechGrammarList)
+getGrammars self
+  = liftIO (js_speechRecognitionGetGrammars self)
+
+foreign import javascript unsafe
+        "$1[\"grammars\"] = $2;"
+        js_speechRecognitionSetGrammars ::
+        SpeechRecognition -> SpeechGrammarList -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.grammars Mozilla SpeechRecognition.grammars documentation>
+setGrammars :: (MonadIO m)
+  => SpeechRecognition -> SpeechGrammarList -> m ()
+setGrammars self grammars
+  = liftIO (js_speechRecognitionSetGrammars self grammars)
+
+foreign import javascript unsafe
+        "$1[\"lang\"]"
+        js_speechRecognitionGetLang ::
+        SpeechRecognition -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.lang Mozilla SpeechRecognition.lang documentation>
+getLang :: (MonadIO m, FromJSString result)
+  => SpeechRecognition -> m (result)
+getLang self
+  = liftIO (fromJSString <$> (js_speechRecognitionGetLang self))
+
+foreign import javascript unsafe
+        "$1[\"lang\"] = $2;"
+        js_speechRecognitionSetLang ::
+        SpeechRecognition -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.lang Mozilla SpeechRecognition.lang documentation>
+setLang :: (MonadIO m, ToJSString lang)
+  => SpeechRecognition -> lang -> m ()
+setLang self lang
+  = liftIO (js_speechRecognitionSetLang self (toJSString lang))
+
+foreign import javascript unsafe
+        "$1[\"interimResults\"]"
+        js_speechRecognitionGetInterimResults ::
+        SpeechRecognition -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.interimResults Mozilla SpeechRecognition.interimResults documentation>
+getInterimResults :: (MonadIO m)
+  => SpeechRecognition -> m (Bool)
+getInterimResults self
+  = liftIO (js_speechRecognitionGetInterimResults self)
+
+foreign import javascript unsafe
+        "$1[\"interimResults\"] = $2;"
+        js_speechRecognitionSetInterimResults ::
+        SpeechRecognition -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.interimResults Mozilla SpeechRecognition.interimResults documentation>
+setInterimResults :: (MonadIO m)
+  => SpeechRecognition -> Bool -> m ()
+setInterimResults self val
+  = liftIO (js_speechRecognitionSetInterimResults self val)
+
+foreign import javascript unsafe
+        "$1[\"continuous\"]"
+        js_speechRecognitionGetContinuous ::
+        SpeechRecognition -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.continuous Mozilla SpeechRecognition.continuous documentation>
+getContinuous :: (MonadIO m)
+  => SpeechRecognition -> m (Bool)
+getContinuous self
+  = liftIO (js_speechRecognitionGetContinuous self)
+
+foreign import javascript unsafe
+        "$1[\"continuous\"] = $2;"
+        js_speechRecognitionSetContinuous ::
+        SpeechRecognition -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.continuous Mozilla SpeechRecognition.continuous documentation>
+setContinuous :: (MonadIO m)
+  => SpeechRecognition -> Bool -> m ()
+setContinuous self val
+  = liftIO (js_speechRecognitionSetContinuous self val)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onaudiostart Mozilla SpeechRecognition.onaudiostart documentation>
+audiostart :: EventName SpeechRecognition Event
+audiostart = unsafeEventName (toJSString "audiostart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onaudioend Mozilla SpeechRecognition.onaudioend documentation>
+audioend :: EventName SpeechRecognition Event
+audioend = unsafeEventName (toJSString "audioend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onend Mozilla SpeechRecognition.onend documentation>
+end :: EventName SpeechRecognition Event
+end = unsafeEventName (toJSString "end")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onerror Mozilla SpeechRecognition.onerror documentation>
+error :: EventName SpeechRecognition SpeechRecognitionError
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onnomatch Mozilla SpeechRecognition.onnomatch documentation>
+nomatch :: EventName SpeechRecognition SpeechRecognitionEvent
+nomatch = unsafeEventName (toJSString "nomatch")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onresult Mozilla SpeechRecognition.onresult documentation>
+result :: EventName SpeechRecognition SpeechRecognitionEvent
+result = unsafeEventName (toJSString "result")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onsoundstart Mozilla SpeechRecognition.onsoundstart documentation>
+soundstart :: EventName SpeechRecognition Event
+soundstart = unsafeEventName (toJSString "soundstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onsoundend Mozilla SpeechRecognition.onsoundend documentation>
+soundend :: EventName SpeechRecognition Event
+soundend = unsafeEventName (toJSString "soundend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onspeechstart Mozilla SpeechRecognition.onspeechstart documentation>
+speechstart :: EventName SpeechRecognition Event
+speechstart = unsafeEventName (toJSString "speechstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onspeechend Mozilla SpeechRecognition.onspeechend documentation>
+speechend :: EventName SpeechRecognition Event
+speechend = unsafeEventName (toJSString "speechend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onstart Mozilla SpeechRecognition.onstart documentation>
+start :: EventName SpeechRecognition Event
+start = unsafeEventName (toJSString "start")
+
+foreign import javascript unsafe
+        "$1[\"abort\"]()"
+        js_speechRecognitionAbort ::
+        SpeechRecognition ->  IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.abort Mozilla SpeechRecognition.abort documentation>
+abort :: (MonadIO m)
+  => SpeechRecognition -> m ()
+abort self
+  = liftIO (js_speechRecognitionAbort self)
+
+foreign import javascript unsafe
+        "$1[\"start\"]()"
+        js_speechRecognitionStart ::
+        SpeechRecognition ->  IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.start Mozilla SpeechRecognition.start documentation>
+startRecognition :: (MonadIO m)
+  => SpeechRecognition -> m ()
+startRecognition self
+  = liftIO (js_speechRecognitionStart self)
+
+foreign import javascript unsafe
+        "$1[\"stop\"]()"
+        js_speechRecognitionStop ::
+        SpeechRecognition ->  IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.stop Mozilla SpeechRecognition.stop documentation>
+stop :: (MonadIO m)
+  => SpeechRecognition -> m ()
+stop self
+  = liftIO (js_speechRecognitionStop self)
diff --git a/src/GHCJS/DOM/JSFFI/SpeechRecognitionError.hs b/src/GHCJS/DOM/JSFFI/SpeechRecognitionError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/SpeechRecognitionError.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.SpeechRecognitionError
+       (getError, getMessage,
+        SpeechRecognitionError(..), gTypeSpeechRecognitionError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "$1[\"error\"]" js_getSpeechRecognitionError ::
+        SpeechRecognitionError -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionError.error Mozilla SpeechRecognitionError.error documentation>
+getError :: (MonadIO m, FromJSString result)
+  => SpeechRecognitionError -> m (result)
+getError self
+  = liftIO (fromJSString <$> (js_getSpeechRecognitionError self))
+
+foreign import javascript unsafe "$1[\"message\"]" js_getSpeechRecognitionErrorMessage ::
+        SpeechRecognitionError -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionError.message Mozilla SpeechRecognitionError.message documentation>
+getMessage :: (MonadIO m, FromJSString result)
+  => SpeechRecognitionError -> m (result)
+getMessage self
+  = liftIO (fromJSString <$> (js_getSpeechRecognitionErrorMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/SpeechRecognitionEvent.hs b/src/GHCJS/DOM/JSFFI/SpeechRecognitionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/SpeechRecognitionEvent.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.SpeechRecognitionEvent
+       (getResultList, getResultListLength, getResultLength,
+        getResult, getAlternative, getTranscript, getConfidence,
+        getResultIsFinal, getBestAlternative,
+        SpeechRecognitionResultList(..), gTypeSpeechRecognitionResultList,
+        SpeechRecognitionResult(..), gTypeSpeechRecognitionResult,
+        SpeechRecognitionAlternative(..), gTypeSpeechRecognitionAlternative,
+        SpeechRecognitionEvent(..), gTypeSpeechRecognitionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "$1[\"results\"]" js_getSpeechRecognitionResultList ::
+        SpeechRecognitionEvent -> IO SpeechRecognitionResultList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionEvent.results Mozilla SpeechRecognitionEvent.results documentation>
+getResultList :: (MonadIO m)
+  => SpeechRecognitionEvent -> m SpeechRecognitionResultList
+getResultList self
+  = liftIO (js_getSpeechRecognitionResultList self)
+
+foreign import javascript unsafe "$1[\"isFinal\"]" js_getIsFinal ::
+        SpeechRecognitionResult -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResult.isFinal Mozilla SpeechRecognitionResult.isFinal documentation>
+getResultIsFinal :: (MonadIO m) => SpeechRecognitionResult -> m Bool
+getResultIsFinal self = liftIO (js_getIsFinal self)
+
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        SpeechRecognitionResult -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResult.length Mozilla SpeechRecognitionResult.length documentation>
+getResultLength :: (MonadIO m) => SpeechRecognitionResult -> m Word
+getResultLength self = liftIO (js_getLength self)
+
+foreign import javascript unsafe "$1[\"length\"]" js_getLength2 ::
+        SpeechRecognitionResultList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResultList.length Mozilla SpeechRecognitionResultList.length documentation>
+getResultListLength :: (MonadIO m) => SpeechRecognitionResultList -> m Word
+getResultListLength self = liftIO (js_getLength2 self)
+
+foreign import javascript unsafe "$1[$2]" js_getSpeechRecognitionAlternative ::
+        SpeechRecognitionResult -> Word -> IO SpeechRecognitionAlternative
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResult.item Mozilla SpeechRecognitionResult.item documentation>
+getAlternative :: (MonadIO m) => SpeechRecognitionResult -> Word -> m SpeechRecognitionAlternative
+getAlternative self index = liftIO (js_getSpeechRecognitionAlternative self index)
+
+foreign import javascript unsafe "$1[$2]" js_getSpeechRecognitionResult ::
+        SpeechRecognitionResultList -> Word -> IO SpeechRecognitionResult
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResultList.item Mozilla SpeechRecognitionResultList.item documentation>
+getResult :: (MonadIO m) => SpeechRecognitionResultList -> Word -> m SpeechRecognitionResult
+getResult self index = liftIO (js_getSpeechRecognitionResult self index)
+
+foreign import javascript unsafe
+        "$1[\"transcript\"]"
+        js_getSpeechRecognitionAlternativeTranscript ::
+        SpeechRecognitionAlternative -> IO (JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionAlternative.transcript Mozilla SpeechRecognitionAlternative.transcript documentation>
+getTranscript :: (MonadIO m)
+  => SpeechRecognitionAlternative -> m (JSString)
+getTranscript self
+  = liftIO (js_getSpeechRecognitionAlternativeTranscript self)
+
+foreign import javascript unsafe
+        "$1[\"confidence\"]"
+        js_getSpeechRecognitionAlternativeConfidence ::
+        SpeechRecognitionAlternative -> IO (Double)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionAlternative.confidence Mozilla SpeechRecognitionAlternative.confidence documentation>
+getConfidence :: (MonadIO m)
+  => SpeechRecognitionAlternative -> m (Double)
+getConfidence self
+  = liftIO (js_getSpeechRecognitionAlternativeConfidence self)
+
+foreign import javascript unsafe
+        "$1[\"results\"][0][0]"
+        js_getBestAlternative ::
+        SpeechRecognitionEvent -> IO SpeechRecognitionAlternative
+
+getBestAlternative :: (MonadIO m)
+  => SpeechRecognitionEvent -> m SpeechRecognitionAlternative
+getBestAlternative ev =
+  liftIO (js_getBestAlternative ev)
diff --git a/src/GHCJS/DOM/JSFFI/XMLHttpRequest.hs b/src/GHCJS/DOM/JSFFI/XMLHttpRequest.hs
--- a/src/GHCJS/DOM/JSFFI/XMLHttpRequest.hs
+++ b/src/GHCJS/DOM/JSFFI/XMLHttpRequest.hs
@@ -12,7 +12,7 @@
 ) where
 
 import Control.Monad.IO.Class (MonadIO(..))
-import Control.Exception (Exception(..), throwIO)
+import Control.Exception (Exception(..), throwIO, onException)
 
 import GHCJS.Types (JSVal)
 import GHCJS.Marshal.Internal (PToJSVal(..))
@@ -36,24 +36,24 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
 send :: (MonadIO m) => XMLHttpRequest -> m ()
-send self = liftIO $ js_send self jsNull >>= throwXHRError
+send self = liftIO $ (js_send self jsNull >>= throwXHRError) `onException` abort self
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
 sendString :: (MonadIO m, ToJSString str) => XMLHttpRequest -> str -> m ()
-sendString self str = liftIO $ js_send self (pToJSVal str) >>= throwXHRError
+sendString self str = liftIO $ (js_send self (pToJSVal str) >>= throwXHRError) `onException` abort self
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
 sendArrayBuffer :: (MonadIO m, IsArrayBufferView view) => XMLHttpRequest -> view -> m ()
-sendArrayBuffer self view = liftIO $ js_send self (unArrayBufferView $ toArrayBufferView view) >>= throwXHRError
+sendArrayBuffer self view = liftIO $ (js_send self (unArrayBufferView $ toArrayBufferView view) >>= throwXHRError) `onException` abort self
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
 sendBlob :: (MonadIO m, IsBlob blob) => XMLHttpRequest -> blob -> m ()
-sendBlob self blob = liftIO $ js_send self (unBlob $ toBlob blob) >>= throwXHRError
+sendBlob self blob = liftIO $ (js_send self (unBlob $ toBlob blob) >>= throwXHRError) `onException` abort self
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
 sendDocument :: (MonadIO m, IsDocument doc) => XMLHttpRequest -> doc -> m ()
-sendDocument self doc = liftIO $ js_send self (unDocument $ toDocument doc) >>= throwXHRError
+sendDocument self doc = liftIO $ (js_send self (unDocument $ toDocument doc) >>= throwXHRError) `onException` abort self
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
 sendFormData :: (MonadIO m) => XMLHttpRequest -> FormData -> m ()
-sendFormData self formData = liftIO $ js_send self (unFormData formData) >>= throwXHRError
+sendFormData self formData = liftIO $ (js_send self (unFormData formData) >>= throwXHRError) `onException` abort self
diff --git a/src/GHCJS/DOM/Types.hs b/src/GHCJS/DOM/Types.hs
--- a/src/GHCJS/DOM/Types.hs
+++ b/src/GHCJS/DOM/Types.hs
@@ -796,6 +796,14 @@
   , SpeechSynthesisEvent(SpeechSynthesisEvent), unSpeechSynthesisEvent, noSpeechSynthesisEvent, gTypeSpeechSynthesisEvent
   , SpeechSynthesisUtterance(SpeechSynthesisUtterance), unSpeechSynthesisUtterance, noSpeechSynthesisUtterance, gTypeSpeechSynthesisUtterance
   , SpeechSynthesisVoice(SpeechSynthesisVoice), unSpeechSynthesisVoice, noSpeechSynthesisVoice, gTypeSpeechSynthesisVoice
+  , SpeechGrammar(SpeechGrammar), unSpeechGrammar, noSpeechGrammar, gTypeSpeechGrammar
+  , SpeechGrammarList(SpeechGrammarList), unSpeechGrammarList, noSpeechGrammarList, gTypeSpeechGrammarList
+  , SpeechRecognition(SpeechRecognition), unSpeechRecognition, noSpeechRecognition, gTypeSpeechRecognition
+  , SpeechRecognitionAlternative(SpeechRecognitionAlternative), unSpeechRecognitionAlternative, noSpeechRecognitionAlternative, gTypeSpeechRecognitionAlternative
+  , SpeechRecognitionEvent(SpeechRecognitionEvent), unSpeechRecognitionEvent, noSpeechRecognitionEvent, gTypeSpeechRecognitionEvent
+  , SpeechRecognitionResult(SpeechRecognitionResult), unSpeechRecognitionResult, noSpeechRecognitionResult, gTypeSpeechRecognitionResult
+  , SpeechRecognitionResultList(SpeechRecognitionResultList), unSpeechRecognitionResultList, noSpeechRecognitionResultList, gTypeSpeechRecognitionResultList
+  , SpeechRecognitionError(SpeechRecognitionError), unSpeechRecognitionError, noSpeechRecognitionError, gTypeSpeechRecognitionError
   , StaticRange(StaticRange), unStaticRange, noStaticRange, gTypeStaticRange
   , Storage(Storage), unStorage, noStorage, gTypeStorage
   , StorageEvent(StorageEvent), unStorageEvent, noStorageEvent, gTypeStorageEvent
@@ -1082,7 +1090,7 @@
 --   will probably crash later on in some unpredictable way.
 --
 -- > element <- uncheckedCastTo Element x
-uncheckedCastTo :: (IsGObject obj, IsGObject obj') => (JSVal -> obj') -> obj -> obj'
+uncheckedCastTo :: (Coercible obj JSVal, IsGObject obj') => (JSVal -> obj') -> obj -> obj'
 uncheckedCastTo constructor = constructor . coerce
 
 -- | Determine if this is an instance of a particular type
@@ -30490,6 +30498,281 @@
 
 foreign import javascript unsafe "window[\"SourceBufferList\"]" gTypeSourceBufferList :: GType
 
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechGrammar".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammar Mozilla SpeechGrammar documentation>
+newtype SpeechGrammar = SpeechGrammar { unSpeechGrammar :: JSVal }
+
+instance Eq (SpeechGrammar) where
+  (SpeechGrammar a) == (SpeechGrammar b) = js_eq a b
+
+instance PToJSVal SpeechGrammar where
+  pToJSVal = unSpeechGrammar
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechGrammar where
+  pFromJSVal = SpeechGrammar
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechGrammar where
+  toJSVal = return . unSpeechGrammar
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechGrammar where
+  fromJSVal = return . fmap SpeechGrammar . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SpeechGrammar where
+  typeGType _ = gTypeSpeechGrammar
+  {-# INLINE typeGType #-}
+
+noSpeechGrammar :: Maybe SpeechGrammar
+noSpeechGrammar = Nothing
+{-# INLINE noSpeechGrammar #-}
+
+foreign import javascript unsafe "window[\"webkitSpeechGrammar\"]" gTypeSpeechGrammar :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechGrammar".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList Mozilla SpeechGrammarList documentation>
+newtype SpeechGrammarList = SpeechGrammarList { unSpeechGrammarList :: JSVal }
+
+instance Eq (SpeechGrammarList) where
+  (SpeechGrammarList a) == (SpeechGrammarList b) = js_eq a b
+
+instance PToJSVal SpeechGrammarList where
+  pToJSVal = unSpeechGrammarList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechGrammarList where
+  pFromJSVal = SpeechGrammarList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechGrammarList where
+  toJSVal = return . unSpeechGrammarList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechGrammarList where
+  fromJSVal = return . fmap SpeechGrammarList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SpeechGrammarList where
+  typeGType _ = gTypeSpeechGrammarList
+  {-# INLINE typeGType #-}
+
+noSpeechGrammarList :: Maybe SpeechGrammarList
+noSpeechGrammarList = Nothing
+{-# INLINE noSpeechGrammarList #-}
+
+foreign import javascript unsafe "window[\"webkitSpeechGrammarList\"]" gTypeSpeechGrammarList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechRecognition".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition Mozilla SpeechRecognition documentation>
+newtype SpeechRecognition = SpeechRecognition { unSpeechRecognition :: JSVal }
+
+instance Eq (SpeechRecognition) where
+  (SpeechRecognition a) == (SpeechRecognition b) = js_eq a b
+
+instance PToJSVal SpeechRecognition where
+  pToJSVal = unSpeechRecognition
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechRecognition where
+  pFromJSVal = SpeechRecognition
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechRecognition where
+  toJSVal = return . unSpeechRecognition
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechRecognition where
+  fromJSVal = return . fmap SpeechRecognition . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget SpeechRecognition
+instance IsGObject SpeechRecognition where
+  typeGType _ = gTypeSpeechRecognition
+  {-# INLINE typeGType #-}
+
+noSpeechRecognition :: Maybe SpeechRecognition
+noSpeechRecognition = Nothing
+{-# INLINE noSpeechRecognition #-}
+
+foreign import javascript unsafe "window[\"webkitSpeechRecognition\"]" gTypeSpeechRecognition :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechRecognitionEvent".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionEvent Mozilla SpeechRecognition documentation>
+newtype SpeechRecognitionEvent = SpeechRecognitionEvent { unSpeechRecognitionEvent :: JSVal }
+
+instance Eq (SpeechRecognitionEvent) where
+  (SpeechRecognitionEvent a) == (SpeechRecognitionEvent b) = js_eq a b
+
+instance PToJSVal SpeechRecognitionEvent where
+  pToJSVal = unSpeechRecognitionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechRecognitionEvent where
+  pFromJSVal = SpeechRecognitionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechRecognitionEvent where
+  toJSVal = return . unSpeechRecognitionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechRecognitionEvent where
+  fromJSVal = return . fmap SpeechRecognitionEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent SpeechRecognitionEvent
+instance IsGObject SpeechRecognitionEvent where
+  typeGType _ = gTypeSpeechRecognitionEvent
+  {-# INLINE typeGType #-}
+
+noSpeechRecognitionEvent :: Maybe SpeechRecognitionEvent
+noSpeechRecognitionEvent = Nothing
+{-# INLINE noSpeechRecognitionEvent #-}
+
+foreign import javascript unsafe "window[\"webkitSpeechRecognitionEvent\"]" gTypeSpeechRecognitionEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechRecognitionEvent".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionAlternative Mozilla SpeechRecognitionAlternative documentation>
+newtype SpeechRecognitionAlternative = SpeechRecognitionAlternative { unSpeechRecognitionAlternative :: JSVal }
+
+instance Eq (SpeechRecognitionAlternative) where
+  (SpeechRecognitionAlternative a) == (SpeechRecognitionAlternative b) = js_eq a b
+
+instance PToJSVal SpeechRecognitionAlternative where
+  pToJSVal = unSpeechRecognitionAlternative
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechRecognitionAlternative where
+  pFromJSVal = SpeechRecognitionAlternative
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechRecognitionAlternative where
+  toJSVal = return . unSpeechRecognitionAlternative
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechRecognitionAlternative where
+  fromJSVal = return . fmap SpeechRecognitionAlternative . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SpeechRecognitionAlternative where
+  typeGType _ = gTypeSpeechRecognitionAlternative
+  {-# INLINE typeGType #-}
+
+noSpeechRecognitionAlternative :: Maybe SpeechRecognitionAlternative
+noSpeechRecognitionAlternative = Nothing
+{-# INLINE noSpeechRecognitionAlternative #-}
+
+foreign import javascript unsafe "window[\"webkitSpeechRecognitionAlternative\"]" gTypeSpeechRecognitionAlternative :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechRecognitionEvent".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResult Mozilla SpeechRecognitionResult documentation>
+newtype SpeechRecognitionResult = SpeechRecognitionResult { unSpeechRecognitionResult :: JSVal }
+
+instance Eq (SpeechRecognitionResult) where
+  (SpeechRecognitionResult a) == (SpeechRecognitionResult b) = js_eq a b
+
+instance PToJSVal SpeechRecognitionResult where
+  pToJSVal = unSpeechRecognitionResult
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechRecognitionResult where
+  pFromJSVal = SpeechRecognitionResult
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechRecognitionResult where
+  toJSVal = return . unSpeechRecognitionResult
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechRecognitionResult where
+  fromJSVal = return . fmap SpeechRecognitionResult . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SpeechRecognitionResult where
+  typeGType _ = gTypeSpeechRecognitionResult
+  {-# INLINE typeGType #-}
+
+noSpeechRecognitionResult :: Maybe SpeechRecognitionResult
+noSpeechRecognitionResult = Nothing
+{-# INLINE noSpeechRecognitionResult #-}
+
+foreign import javascript unsafe "window[\"webkitSpeechRecognitionResult\"]" gTypeSpeechRecognitionResult :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechRecognitionEvent".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResultList Mozilla SpeechRecognitionResultList documentation>
+newtype SpeechRecognitionResultList = SpeechRecognitionResultList { unSpeechRecognitionResultList :: JSVal }
+
+instance Eq (SpeechRecognitionResultList) where
+  (SpeechRecognitionResultList a) == (SpeechRecognitionResultList b) = js_eq a b
+
+instance PToJSVal SpeechRecognitionResultList where
+  pToJSVal = unSpeechRecognitionResultList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechRecognitionResultList where
+  pFromJSVal = SpeechRecognitionResultList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechRecognitionResultList where
+  toJSVal = return . unSpeechRecognitionResultList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechRecognitionResultList where
+  fromJSVal = return . fmap SpeechRecognitionResultList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SpeechRecognitionResultList where
+  typeGType _ = gTypeSpeechRecognitionResultList
+  {-# INLINE typeGType #-}
+
+noSpeechRecognitionResultList :: Maybe SpeechRecognitionResultList
+noSpeechRecognitionResultList = Nothing
+{-# INLINE noSpeechRecognitionResultList #-}
+
+foreign import javascript unsafe "window[\"webkitSpeechRecognitionResultList\"]" gTypeSpeechRecognitionResultList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechRecognitionError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionError Mozilla SpeechRecognitionError documentation>
+newtype SpeechRecognitionError = SpeechRecognitionError { unSpeechRecognitionError :: JSVal }
+
+instance Eq (SpeechRecognitionError) where
+  (SpeechRecognitionError a) == (SpeechRecognitionError b) = js_eq a b
+
+instance PToJSVal SpeechRecognitionError where
+  pToJSVal = unSpeechRecognitionError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechRecognitionError where
+  pFromJSVal = SpeechRecognitionError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechRecognitionError where
+  toJSVal = return . unSpeechRecognitionError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechRecognitionError where
+  fromJSVal = return . fmap SpeechRecognitionError . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent SpeechRecognitionError
+instance IsGObject SpeechRecognitionError where
+  typeGType _ = gTypeSpeechRecognitionError
+  {-# INLINE typeGType #-}
+
+noSpeechRecognitionError :: Maybe SpeechRecognitionError
+noSpeechRecognitionError = Nothing
+{-# INLINE noSpeechRecognitionError #-}
+
+foreign import javascript unsafe "window[\"webkitSpeechRecognitionError\"]" gTypeSpeechRecognitionError :: GType
+
 -- | Functions for this inteface are in "GHCJS.DOM.SpeechSynthesis".
 --
 -- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis Mozilla SpeechSynthesis documentation>
@@ -35545,4 +35828,3 @@
 {-# INLINE noXSLTProcessor #-}
 
 foreign import javascript unsafe "window[\"XSLTProcessor\"]" gTypeXSLTProcessor :: GType
-
