diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/jsaddle-dom.cabal b/jsaddle-dom.cabal
--- a/jsaddle-dom.cabal
+++ b/jsaddle-dom.cabal
@@ -1,5 +1,5 @@
 name: jsaddle-dom
-version: 0.9.2.0
+version: 0.9.3.0
 cabal-version: >=1.22
 build-type: Simple
 license: MIT
@@ -17,6 +17,10 @@
     location: https://github.com/ghcjs/jsaddle-dom
 
 library
+    -- workaround for older GHC choking the C compiler with cost centre
+    -- declarations (GHC trac #7960)
+    if impl(ghc < 8.4)
+        ghc-prof-options: -fno-prof-auto
 
     if impl(ghcjs -any)
         build-depends:
@@ -1209,11 +1213,11 @@
                         JSDOM.Generated.XSLTProcessor as JSDOM.XSLTProcessor
     build-depends:
         base >=4.7.0.0 && <5,
-        base-compat >=0.9.0 && <0.10,
+        base-compat >=0.9.0 && <0.11,
+        exceptions >=0.8 && <0.11,
         transformers >=0.2 && <0.6,
         text >=0.11.0.6 && <1.3,
         jsaddle >=0.9.3.0 && <0.10,
-        lens >=4.12.3 && <4.16
+        lens >=4.12.3 && <4.18
     default-language: Haskell2010
     hs-source-dirs: src
-
diff --git a/src/JSDOM.hs b/src/JSDOM.hs
--- a/src/JSDOM.hs
+++ b/src/JSDOM.hs
@@ -68,16 +68,24 @@
                  -> JSM AnimationFrameHandle
 inAnimationFrame _ f = do
     handlersMVar <- animationFrameHandlers <$> askJSM
+    -- Take the list of pending animation fram handlers
     handlers <- liftIO $ takeMVar handlersMVar
+    -- Add this handler to the list to be run by the callback
+    liftIO $ putMVar handlersMVar (f : handlers)
+    -- If this was the first handler added set up a callback
+    -- to run the handlers in the next animation frame.
     when (null handlers) $ do
         win <- currentWindowUnchecked
-        rec cb@(RequestAnimationFrameCallback (Callback f)) <- newRequestAnimationFrameCallbackSync $ \t -> do
-              freeFunction f
+        rec cb@(RequestAnimationFrameCallback (Callback fCb)) <- newRequestAnimationFrameCallbackSync $ \t -> do
+              -- This is a one off handler so free it when it runs
+              freeFunction fCb
+              -- Take the list of handers and empty it
               handlersToRun <- liftIO $ takeMVar handlersMVar
               liftIO $ putMVar handlersMVar []
+              -- Exectute handlers in the order 
               forM_ (reverse handlersToRun) (\handler -> handler t)
+        -- Add the callback function
         void $ requestAnimationFrame win cb
-    liftIO $ putMVar handlersMVar (f : handlers)
     return AnimationFrameHandle
 
 #endif
diff --git a/src/JSDOM/Custom/XMLHttpRequest.hs b/src/JSDOM/Custom/XMLHttpRequest.hs
--- a/src/JSDOM/Custom/XMLHttpRequest.hs
+++ b/src/JSDOM/Custom/XMLHttpRequest.hs
@@ -14,20 +14,20 @@
 import Prelude.Compat
 import Data.Typeable (Typeable)
 import Control.Concurrent.MVar (takeMVar, newEmptyMVar, putMVar)
+import Control.Monad (void)
 import Control.Monad.IO.Class (MonadIO(..))
-import Control.Exception (Exception(..), throwIO)
+import Control.Monad.Catch (onException, bracket, throwM)
+import Control.Exception (Exception(..))
 import Control.Lens.Operators ((^.))
 
 import Language.Javascript.JSaddle
-       (js0, js1, bracket,
-        ToJSString, ToJSVal(..), JSVal)
+       (js0, js1, ToJSString, ToJSVal(..), JSVal)
 import JSDOM.Types
        (DOM, MonadDOM, liftDOM, FormData(..), IsDocument, IsBlob, IsArrayBufferView)
-import JSDOM.EventM (on)
+import JSDOM.EventM (onAsync)
 
 import JSDOM.Generated.XMLHttpRequest as Generated hiding (send)
 import JSDOM.Generated.XMLHttpRequestEventTarget as Generated
-import Control.Monad (void)
 
 data XHRError = XHRError
               | XHRAborted
@@ -36,44 +36,44 @@
 instance Exception XHRError
 
 throwXHRError :: MonadDOM m => Maybe XHRError -> m ()
-throwXHRError = maybe (return ()) (liftIO . throwIO)
+throwXHRError = maybe (return ()) (liftDOM . throwM)
 
 withEvent :: DOM (DOM ()) -> DOM a -> DOM a
 withEvent aquire = bracket aquire id . const
 
-send' :: (MonadDOM m) => XMLHttpRequest -> Maybe JSVal -> m (Maybe XHRError)
-send' self mbVal = do
+send' :: (MonadDOM m) => XMLHttpRequest -> Maybe JSVal -> m ()
+send' self mbVal = liftDOM $ (`onException` abort self) $ do
     result <- liftIO newEmptyMVar
-    liftDOM $
-        withEvent (on self Generated.error . liftIO $ putMVar result (Just XHRError)) $
-            withEvent (on self abortEvent . liftIO $ putMVar result (Just XHRAborted)) $
-                withEvent (on self load . liftIO $ putMVar result Nothing) $ do
+    r <- withEvent (onAsync self Generated.error . liftIO $ putMVar result (Just XHRError)) $
+            withEvent (onAsync self abortEvent . liftIO $ putMVar result (Just XHRAborted)) $
+                withEvent (onAsync self load . liftIO $ putMVar result Nothing) $ do
                     void $
                         case mbVal of
                             Nothing  -> self ^. js0 "send"
                             Just val -> self ^. js1 "send" val
                     liftIO $ takeMVar result
+    throwXHRError r
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
 send :: (MonadDOM m) => XMLHttpRequest -> m ()
-send self = send' self Nothing >>= throwXHRError
+send self = send' self Nothing
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
 sendString :: (MonadDOM m, ToJSString str) => XMLHttpRequest -> str -> m ()
-sendString self str = liftDOM $ toJSVal str >>= send' self . Just >>= throwXHRError
+sendString self str = liftDOM $ toJSVal str >>= send' self . Just
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
 sendArrayBuffer :: (MonadDOM m, IsArrayBufferView view) => XMLHttpRequest -> view -> m ()
-sendArrayBuffer self view = liftDOM $ toJSVal view >>= send' self . Just >>= throwXHRError
+sendArrayBuffer self view = liftDOM $ toJSVal view >>= send' self . Just
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
 sendBlob :: (MonadDOM m, IsBlob blob) => XMLHttpRequest -> blob -> m ()
-sendBlob self blob = liftDOM $ toJSVal blob >>= send' self . Just >>= throwXHRError
+sendBlob self blob = liftDOM $ toJSVal blob >>= send' self . Just
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
 sendDocument :: (MonadDOM m, IsDocument doc) => XMLHttpRequest -> doc -> m ()
-sendDocument self doc = liftDOM $ toJSVal doc >>= send' self . Just >>= throwXHRError
+sendDocument self doc = liftDOM $ toJSVal doc >>= send' self . Just
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
 sendFormData :: (MonadDOM m) => XMLHttpRequest -> FormData -> m ()
-sendFormData self formData = liftDOM $ toJSVal formData >>= send' self . Just >>= throwXHRError
+sendFormData self formData = liftDOM $ toJSVal formData >>= send' self . Just
diff --git a/src/JSDOM/EventM.hs b/src/JSDOM/EventM.hs
--- a/src/JSDOM/EventM.hs
+++ b/src/JSDOM/EventM.hs
@@ -1,7 +1,13 @@
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE ConstraintKinds #-}
+{- | 'EventM' provides a convenient monadic interface for handling DOM events.
+
+The <https://developer.mozilla.org/en-US/docs/Web/API/Event DOM Event interface>
+is exposed, as well as functions for accessing UIEvents and MouseEvents.
+-}
 module JSDOM.EventM
 (
+-- $doc
   EventM(..)
 , SaferEventListener(..)
 , EventName
@@ -12,6 +18,11 @@
 , removeListener
 , releaseListener
 , on
+, onSync
+, onAsync
+, onTheseSync
+, onTheseAsync
+-- * Event interface
 , event
 , eventTarget
 , target
@@ -29,6 +40,7 @@
 , cancelBubble
 , getReturnValue
 , returnValue
+-- * UIEvent helpers
 , uiView
 , uiDetail
 , uiKeyCode
@@ -40,6 +52,7 @@
 , uiPageY
 , uiPageXY
 , uiWhich
+-- * MouseEvent helpers
 , mouseScreenX
 , mouseScreenY
 , mouseScreenXY
@@ -81,41 +94,90 @@
 import           Data.Traversable (mapM)
 import           Data.Coerce (coerce)
 
+-- $doc
+-- TODO: small tutorial w/ example function
+
+-- | @IO@ with the current @Event@ in scope (read with 'event').
 type EventM t e = ReaderT e DOM
 
+-- | See 'eventListenerNew'.
 newListener :: (IsEvent e) => EventM t e () -> DOM (SaferEventListener t e)
 newListener f = eventListenerNew (runReaderT f)
 
+-- | See 'eventListenerNewSync'.
 newListenerSync :: (IsEvent e) => EventM t e () -> DOM (SaferEventListener t e)
 newListenerSync f = eventListenerNewSync (runReaderT f)
 
+-- | See 'eventListenerNewAsync'.
 newListenerAsync :: (IsEvent e) => EventM t e () -> DOM (SaferEventListener t e)
 newListenerAsync f = eventListenerNewAsync (runReaderT f)
 
+-- | Add an EventListener to an EventTarget.
 addListener :: (IsEventTarget t, IsEvent e) => t -> EventName t e -> SaferEventListener t e -> Bool -> DOM ()
-addListener target (EventName eventName) l useCapture = do
+addListener target eventName l useCapture = do
     raw <- EventListener <$> toJSVal l
-    addEventListener target eventName (Just raw) useCapture
+    addEventListener target (eventNameString eventName) (Just raw) useCapture
 
+-- | Remove an EventListener from an EventTarget.
 removeListener :: (IsEventTarget t, IsEvent e) => t -> EventName t e -> SaferEventListener t e -> Bool -> DOM ()
-removeListener target (EventName eventName) l useCapture = do
+removeListener target eventName l useCapture = do
     raw <- EventListener <$> toJSVal l
-    removeEventListener target eventName (Just raw) useCapture
+    removeEventListener target (eventNameString eventName) (Just raw) useCapture
 
+-- | Release the listener (deallocates callbacks).
 releaseListener :: (IsEventTarget t, IsEvent e) => SaferEventListener t e -> DOM ()
 releaseListener = eventListenerRelease
 
+-- | Shortcut for create, add and release:
+--
+-- @
+-- 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
+-- @
 on :: (IsEventTarget t, IsEvent e) => t -> EventName t e -> EventM t e () -> DOM (DOM ())
-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 -> EventName t e -> EventM t e () -> DOM (DOM ())
+onSync target eventName callback = do
+    l <- newListenerSync callback
     addListener target eventName l False
     return $ do
         removeListener target eventName l False
         releaseListener l
 
-onThese :: (IsEventTarget t, IsEvent e) => [(t, EventName t e)] -> EventM t e () -> DOM (DOM ())
-onThese targetsAndEventNames callback = do
-    l <- newListener callback
+-- | Like 'on' but always uses 'newListenerAsync'
+onAsync :: (IsEventTarget t, IsEvent e) => t -> EventName t e -> EventM t e () -> JSM (JSM ())
+onAsync target eventName callback = do
+    l <- newListenerAsync callback
+    addListener target eventName l False
+    return $ do
+        removeListener target eventName l False
+        releaseListener l
+
+-- | 'onSync' for multiple targets & events.
+--
+--   The returned @IO@ action removes them all at once.
+onTheseSync :: (IsEventTarget t, IsEvent e) => [(t, EventName t e)] -> EventM t e () -> DOM (DOM ())
+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 () -> DOM (DOM ())
+onTheseAsync targetsAndEventNames callback = do
+    l <- newListenerAsync callback
     forM_ targetsAndEventNames $ \(target, eventName) ->
         addListener target eventName l False
     return (do
diff --git a/src/JSDOM/EventTargetClosures.hs b/src/JSDOM/EventTargetClosures.hs
--- a/src/JSDOM/EventTargetClosures.hs
+++ b/src/JSDOM/EventTargetClosures.hs
@@ -1,11 +1,24 @@
 module JSDOM.EventTargetClosures
-       (EventName(..), SaferEventListener(..), unsafeEventName, eventListenerNew, eventListenerNewSync, eventListenerNewAsync, eventListenerRelease) where
+  ( EventName(..)
+  , SaferEventListener(..)
+  , eventNameString
+  , unsafeEventName
+  , unsafeEventNameAsync
+  , eventListenerNew
+  , eventListenerNewSync
+  , eventListenerNewAsync
+  , eventListenerRelease) where
 
 import Control.Applicative ((<$>))
 import JSDOM.Types
-import Language.Javascript.JSaddle as JSaddle (function, JSM, Function(..), freeFunction)
+import Language.Javascript.JSaddle as JSaddle (function, asyncFunction, JSM, Function(..), freeFunction)
 
-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
+
 newtype SaferEventListener t e = SaferEventListener JSaddle.Function
 
 instance ToJSVal (SaferEventListener t e) where
@@ -17,8 +30,11 @@
 --    {-# INLINE fromJSVal #-}
 
 unsafeEventName :: DOMString -> EventName t e
-unsafeEventName = EventName
+unsafeEventName = EventNameSyncDefault
 
+unsafeEventNameAsync :: DOMString -> EventName t e
+unsafeEventNameAsync = EventNameAsyncDefault
+
 eventListenerNew :: (IsEvent e) => (e -> JSM ()) -> JSM (SaferEventListener t e)
 eventListenerNew callback = SaferEventListener <$> function (\_ _ [e] -> fromJSValUnchecked e >>= callback)
 
@@ -26,7 +42,7 @@
 eventListenerNewSync callback = SaferEventListener <$> function (\_ _ [e] -> fromJSValUnchecked e >>= callback)
 
 eventListenerNewAsync :: (IsEvent e) => (e -> JSM ()) -> JSM (SaferEventListener t e)
-eventListenerNewAsync callback = SaferEventListener <$> function (\_ _ [e] -> fromJSValUnchecked e >>= callback)
+eventListenerNewAsync callback = SaferEventListener <$> asyncFunction (\_ _ [e] -> fromJSValUnchecked e >>= callback)
 
 eventListenerRelease :: SaferEventListener t e -> JSM ()
 eventListenerRelease (SaferEventListener f) = freeFunction f
diff --git a/src/JSDOM/Generated/ANGLEInstancedArrays.hs b/src/JSDOM/Generated/ANGLEInstancedArrays.hs
--- a/src/JSDOM/Generated/ANGLEInstancedArrays.hs
+++ b/src/JSDOM/Generated/ANGLEInstancedArrays.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ANGLEInstancedArrays.drawArraysInstancedANGLE Mozilla ANGLEInstancedArrays.drawArraysInstancedANGLE documentation> 
diff --git a/src/JSDOM/Generated/AbstractWorker.hs b/src/JSDOM/Generated/AbstractWorker.hs
--- a/src/JSDOM/Generated/AbstractWorker.hs
+++ b/src/JSDOM/Generated/AbstractWorker.hs
@@ -17,11 +17,11 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.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/JSDOM/Generated/AnalyserNode.hs b/src/JSDOM/Generated/AnalyserNode.hs
--- a/src/JSDOM/Generated/AnalyserNode.hs
+++ b/src/JSDOM/Generated/AnalyserNode.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.getFloatFrequencyData Mozilla AnalyserNode.getFloatFrequencyData documentation> 
diff --git a/src/JSDOM/Generated/Animatable.hs b/src/JSDOM/Generated/Animatable.hs
--- a/src/JSDOM/Generated/Animatable.hs
+++ b/src/JSDOM/Generated/Animatable.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Animatable.getAnimations Mozilla Animatable.getAnimations documentation> 
diff --git a/src/JSDOM/Generated/Animation.hs b/src/JSDOM/Generated/Animation.hs
--- a/src/JSDOM/Generated/Animation.hs
+++ b/src/JSDOM/Generated/Animation.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation Mozilla Animation documentation> 
diff --git a/src/JSDOM/Generated/AnimationEvent.hs b/src/JSDOM/Generated/AnimationEvent.hs
--- a/src/JSDOM/Generated/AnimationEvent.hs
+++ b/src/JSDOM/Generated/AnimationEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent Mozilla AnimationEvent documentation> 
diff --git a/src/JSDOM/Generated/ApplePayError.hs b/src/JSDOM/Generated/ApplePayError.hs
--- a/src/JSDOM/Generated/ApplePayError.hs
+++ b/src/JSDOM/Generated/ApplePayError.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError Mozilla ApplePayError documentation> 
diff --git a/src/JSDOM/Generated/ApplePayPaymentAuthorizedEvent.hs b/src/JSDOM/Generated/ApplePayPaymentAuthorizedEvent.hs
--- a/src/JSDOM/Generated/ApplePayPaymentAuthorizedEvent.hs
+++ b/src/JSDOM/Generated/ApplePayPaymentAuthorizedEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayPaymentAuthorizedEvent.payment Mozilla ApplePayPaymentAuthorizedEvent.payment documentation> 
diff --git a/src/JSDOM/Generated/ApplePayPaymentMethodSelectedEvent.hs b/src/JSDOM/Generated/ApplePayPaymentMethodSelectedEvent.hs
--- a/src/JSDOM/Generated/ApplePayPaymentMethodSelectedEvent.hs
+++ b/src/JSDOM/Generated/ApplePayPaymentMethodSelectedEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayPaymentMethodSelectedEvent.paymentMethod Mozilla ApplePayPaymentMethodSelectedEvent.paymentMethod documentation> 
diff --git a/src/JSDOM/Generated/ApplePaySession.hs b/src/JSDOM/Generated/ApplePaySession.hs
--- a/src/JSDOM/Generated/ApplePaySession.hs
+++ b/src/JSDOM/Generated/ApplePaySession.hs
@@ -33,7 +33,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession Mozilla ApplePaySession documentation> 
@@ -46,34 +46,41 @@
            [toJSVal version, toJSVal paymentRequest])
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.supportsVersion Mozilla ApplePaySession.supportsVersion documentation> 
-supportsVersion ::
-                (MonadDOM m) => ApplePaySession -> Word -> m Bool
-supportsVersion self version
+supportsVersion :: (MonadDOM m) => Word -> m Bool
+supportsVersion version
   = liftDOM
-      ((self ^. jsf "supportsVersion" [toJSVal version]) >>= valToBool)
+      (((jsg "ApplePaySession") ^. jsf "supportsVersion"
+          [toJSVal version])
+         >>= valToBool)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.supportsVersion Mozilla ApplePaySession.supportsVersion documentation> 
-supportsVersion_ :: (MonadDOM m) => ApplePaySession -> Word -> m ()
-supportsVersion_ self version
-  = liftDOM (void (self ^. jsf "supportsVersion" [toJSVal version]))
+supportsVersion_ :: (MonadDOM m) => Word -> m ()
+supportsVersion_ version
+  = liftDOM
+      (void
+         ((jsg "ApplePaySession") ^. jsf "supportsVersion"
+            [toJSVal version]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePayments Mozilla ApplePaySession.canMakePayments documentation> 
-canMakePayments :: (MonadDOM m) => ApplePaySession -> m Bool
-canMakePayments self
-  = liftDOM ((self ^. jsf "canMakePayments" ()) >>= valToBool)
+canMakePayments :: (MonadDOM m) => m Bool
+canMakePayments
+  = liftDOM
+      (((jsg "ApplePaySession") ^. jsf "canMakePayments" ()) >>=
+         valToBool)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePayments Mozilla ApplePaySession.canMakePayments documentation> 
-canMakePayments_ :: (MonadDOM m) => ApplePaySession -> m ()
-canMakePayments_ self
-  = liftDOM (void (self ^. jsf "canMakePayments" ()))
+canMakePayments_ :: (MonadDOM m) => m ()
+canMakePayments_
+  = liftDOM
+      (void ((jsg "ApplePaySession") ^. jsf "canMakePayments" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePaymentsWithActiveCard Mozilla ApplePaySession.canMakePaymentsWithActiveCard documentation> 
 canMakePaymentsWithActiveCard ::
                               (MonadDOM m, ToJSString merchantIdentifier) =>
-                                ApplePaySession -> merchantIdentifier -> m Bool
-canMakePaymentsWithActiveCard self merchantIdentifier
+                                merchantIdentifier -> m Bool
+canMakePaymentsWithActiveCard merchantIdentifier
   = liftDOM
-      (((self ^. jsf "canMakePaymentsWithActiveCard"
+      ((((jsg "ApplePaySession") ^. jsf "canMakePaymentsWithActiveCard"
            [toJSVal merchantIdentifier])
           >>= readPromise)
          >>= valToBool)
@@ -81,31 +88,33 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePaymentsWithActiveCard Mozilla ApplePaySession.canMakePaymentsWithActiveCard documentation> 
 canMakePaymentsWithActiveCard_ ::
                                (MonadDOM m, ToJSString merchantIdentifier) =>
-                                 ApplePaySession -> merchantIdentifier -> m ()
-canMakePaymentsWithActiveCard_ self merchantIdentifier
+                                 merchantIdentifier -> m ()
+canMakePaymentsWithActiveCard_ merchantIdentifier
   = liftDOM
       (void
-         (self ^. jsf "canMakePaymentsWithActiveCard"
+         ((jsg "ApplePaySession") ^. jsf "canMakePaymentsWithActiveCard"
             [toJSVal merchantIdentifier]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.openPaymentSetup Mozilla ApplePaySession.openPaymentSetup documentation> 
 openPaymentSetup ::
                  (MonadDOM m, ToJSString merchantIdentifier) =>
-                   ApplePaySession -> merchantIdentifier -> m Bool
-openPaymentSetup self merchantIdentifier
+                   merchantIdentifier -> m Bool
+openPaymentSetup merchantIdentifier
   = liftDOM
-      (((self ^. jsf "openPaymentSetup" [toJSVal merchantIdentifier]) >>=
-          readPromise)
+      ((((jsg "ApplePaySession") ^. jsf "openPaymentSetup"
+           [toJSVal merchantIdentifier])
+          >>= readPromise)
          >>= valToBool)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.openPaymentSetup Mozilla ApplePaySession.openPaymentSetup documentation> 
 openPaymentSetup_ ::
                   (MonadDOM m, ToJSString merchantIdentifier) =>
-                    ApplePaySession -> merchantIdentifier -> m ()
-openPaymentSetup_ self merchantIdentifier
+                    merchantIdentifier -> m ()
+openPaymentSetup_ merchantIdentifier
   = liftDOM
       (void
-         (self ^. jsf "openPaymentSetup" [toJSVal merchantIdentifier]))
+         ((jsg "ApplePaySession") ^. jsf "openPaymentSetup"
+            [toJSVal merchantIdentifier]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.begin Mozilla ApplePaySession.begin documentation> 
 begin :: (MonadDOM m) => ApplePaySession -> m ()
diff --git a/src/JSDOM/Generated/ApplePayShippingContactSelectedEvent.hs b/src/JSDOM/Generated/ApplePayShippingContactSelectedEvent.hs
--- a/src/JSDOM/Generated/ApplePayShippingContactSelectedEvent.hs
+++ b/src/JSDOM/Generated/ApplePayShippingContactSelectedEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayShippingContactSelectedEvent.shippingContact Mozilla ApplePayShippingContactSelectedEvent.shippingContact documentation> 
diff --git a/src/JSDOM/Generated/ApplePayShippingMethodSelectedEvent.hs b/src/JSDOM/Generated/ApplePayShippingMethodSelectedEvent.hs
--- a/src/JSDOM/Generated/ApplePayShippingMethodSelectedEvent.hs
+++ b/src/JSDOM/Generated/ApplePayShippingMethodSelectedEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayShippingMethodSelectedEvent.shippingMethod Mozilla ApplePayShippingMethodSelectedEvent.shippingMethod documentation> 
diff --git a/src/JSDOM/Generated/ApplePayValidateMerchantEvent.hs b/src/JSDOM/Generated/ApplePayValidateMerchantEvent.hs
--- a/src/JSDOM/Generated/ApplePayValidateMerchantEvent.hs
+++ b/src/JSDOM/Generated/ApplePayValidateMerchantEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayValidateMerchantEvent.validationURL Mozilla ApplePayValidateMerchantEvent.validationURL documentation> 
diff --git a/src/JSDOM/Generated/ApplicationCache.hs b/src/JSDOM/Generated/ApplicationCache.hs
--- a/src/JSDOM/Generated/ApplicationCache.hs
+++ b/src/JSDOM/Generated/ApplicationCache.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.update Mozilla ApplicationCache.update documentation> 
@@ -52,7 +52,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
@@ -64,7 +64,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/JSDOM/Generated/Attr.hs b/src/JSDOM/Generated/Attr.hs
--- a/src/JSDOM/Generated/Attr.hs
+++ b/src/JSDOM/Generated/Attr.hs
@@ -20,21 +20,21 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.namespaceURI Mozilla Attr.namespaceURI documentation> 
 getNamespaceURI ::
                 (MonadDOM m, FromJSString result) => Attr -> m (Maybe result)
 getNamespaceURI self
-  = liftDOM ((self ^. js "namespaceURI") >>= fromJSVal)
+  = liftDOM ((self ^. js "namespaceURI") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.namespaceURI Mozilla Attr.namespaceURI documentation> 
 getNamespaceURIUnsafe ::
                       (MonadDOM m, HasCallStack, FromJSString result) => Attr -> m result
 getNamespaceURIUnsafe self
   = liftDOM
-      (((self ^. js "namespaceURI") >>= fromJSVal) >>=
+      (((self ^. js "namespaceURI") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.namespaceURI Mozilla Attr.namespaceURI documentation> 
@@ -46,14 +46,15 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.prefix Mozilla Attr.prefix documentation> 
 getPrefix ::
           (MonadDOM m, FromJSString result) => Attr -> m (Maybe result)
-getPrefix self = liftDOM ((self ^. js "prefix") >>= fromJSVal)
+getPrefix self
+  = liftDOM ((self ^. js "prefix") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.prefix Mozilla Attr.prefix documentation> 
 getPrefixUnsafe ::
                 (MonadDOM m, HasCallStack, FromJSString result) => Attr -> m result
 getPrefixUnsafe self
   = liftDOM
-      (((self ^. js "prefix") >>= fromJSVal) >>=
+      (((self ^. js "prefix") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.prefix Mozilla Attr.prefix documentation> 
diff --git a/src/JSDOM/Generated/AudioBuffer.hs b/src/JSDOM/Generated/AudioBuffer.hs
--- a/src/JSDOM/Generated/AudioBuffer.hs
+++ b/src/JSDOM/Generated/AudioBuffer.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.getChannelData Mozilla AudioBuffer.getChannelData documentation> 
diff --git a/src/JSDOM/Generated/AudioBufferCallback.hs b/src/JSDOM/Generated/AudioBufferCallback.hs
--- a/src/JSDOM/Generated/AudioBufferCallback.hs
+++ b/src/JSDOM/Generated/AudioBufferCallback.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferCallback Mozilla AudioBufferCallback documentation> 
diff --git a/src/JSDOM/Generated/AudioBufferSourceNode.hs b/src/JSDOM/Generated/AudioBufferSourceNode.hs
--- a/src/JSDOM/Generated/AudioBufferSourceNode.hs
+++ b/src/JSDOM/Generated/AudioBufferSourceNode.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.start Mozilla AudioBufferSourceNode.start documentation> 
diff --git a/src/JSDOM/Generated/AudioContext.hs b/src/JSDOM/Generated/AudioContext.hs
--- a/src/JSDOM/Generated/AudioContext.hs
+++ b/src/JSDOM/Generated/AudioContext.hs
@@ -33,7 +33,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext Mozilla AudioContext documentation> 
diff --git a/src/JSDOM/Generated/AudioDestinationNode.hs b/src/JSDOM/Generated/AudioDestinationNode.hs
--- a/src/JSDOM/Generated/AudioDestinationNode.hs
+++ b/src/JSDOM/Generated/AudioDestinationNode.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioDestinationNode.maxChannelCount Mozilla AudioDestinationNode.maxChannelCount documentation> 
diff --git a/src/JSDOM/Generated/AudioListener.hs b/src/JSDOM/Generated/AudioListener.hs
--- a/src/JSDOM/Generated/AudioListener.hs
+++ b/src/JSDOM/Generated/AudioListener.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.setPosition Mozilla AudioListener.setPosition documentation> 
diff --git a/src/JSDOM/Generated/AudioNode.hs b/src/JSDOM/Generated/AudioNode.hs
--- a/src/JSDOM/Generated/AudioNode.hs
+++ b/src/JSDOM/Generated/AudioNode.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.connect Mozilla AudioNode.connect documentation> 
diff --git a/src/JSDOM/Generated/AudioParam.hs b/src/JSDOM/Generated/AudioParam.hs
--- a/src/JSDOM/Generated/AudioParam.hs
+++ b/src/JSDOM/Generated/AudioParam.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.setValueAtTime Mozilla AudioParam.setValueAtTime documentation> 
diff --git a/src/JSDOM/Generated/AudioProcessingEvent.hs b/src/JSDOM/Generated/AudioProcessingEvent.hs
--- a/src/JSDOM/Generated/AudioProcessingEvent.hs
+++ b/src/JSDOM/Generated/AudioProcessingEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.playbackTime Mozilla AudioProcessingEvent.playbackTime documentation> 
diff --git a/src/JSDOM/Generated/AudioTrack.hs b/src/JSDOM/Generated/AudioTrack.hs
--- a/src/JSDOM/Generated/AudioTrack.hs
+++ b/src/JSDOM/Generated/AudioTrack.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.id Mozilla AudioTrack.id documentation> 
diff --git a/src/JSDOM/Generated/AudioTrackList.hs b/src/JSDOM/Generated/AudioTrackList.hs
--- a/src/JSDOM/Generated/AudioTrackList.hs
+++ b/src/JSDOM/Generated/AudioTrackList.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.item Mozilla AudioTrackList.item documentation> 
diff --git a/src/JSDOM/Generated/AutocompleteErrorEvent.hs b/src/JSDOM/Generated/AutocompleteErrorEvent.hs
--- a/src/JSDOM/Generated/AutocompleteErrorEvent.hs
+++ b/src/JSDOM/Generated/AutocompleteErrorEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AutocompleteErrorEvent Mozilla AutocompleteErrorEvent documentation> 
diff --git a/src/JSDOM/Generated/BarProp.hs b/src/JSDOM/Generated/BarProp.hs
--- a/src/JSDOM/Generated/BarProp.hs
+++ b/src/JSDOM/Generated/BarProp.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/BarProp.visible Mozilla BarProp.visible documentation> 
diff --git a/src/JSDOM/Generated/BasicCredential.hs b/src/JSDOM/Generated/BasicCredential.hs
--- a/src/JSDOM/Generated/BasicCredential.hs
+++ b/src/JSDOM/Generated/BasicCredential.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/BasicCredential.id Mozilla BasicCredential.id documentation> 
diff --git a/src/JSDOM/Generated/BeforeLoadEvent.hs b/src/JSDOM/Generated/BeforeLoadEvent.hs
--- a/src/JSDOM/Generated/BeforeLoadEvent.hs
+++ b/src/JSDOM/Generated/BeforeLoadEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeLoadEvent Mozilla BeforeLoadEvent documentation> 
diff --git a/src/JSDOM/Generated/BeforeUnloadEvent.hs b/src/JSDOM/Generated/BeforeUnloadEvent.hs
--- a/src/JSDOM/Generated/BeforeUnloadEvent.hs
+++ b/src/JSDOM/Generated/BeforeUnloadEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeUnloadEvent.returnValue Mozilla BeforeUnloadEvent.returnValue documentation> 
diff --git a/src/JSDOM/Generated/BiquadFilterNode.hs b/src/JSDOM/Generated/BiquadFilterNode.hs
--- a/src/JSDOM/Generated/BiquadFilterNode.hs
+++ b/src/JSDOM/Generated/BiquadFilterNode.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.getFrequencyResponse Mozilla BiquadFilterNode.getFrequencyResponse documentation> 
diff --git a/src/JSDOM/Generated/Blob.hs b/src/JSDOM/Generated/Blob.hs
--- a/src/JSDOM/Generated/Blob.hs
+++ b/src/JSDOM/Generated/Blob.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob Mozilla Blob documentation> 
diff --git a/src/JSDOM/Generated/BlobCallback.hs b/src/JSDOM/Generated/BlobCallback.hs
--- a/src/JSDOM/Generated/BlobCallback.hs
+++ b/src/JSDOM/Generated/BlobCallback.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/BlobCallback Mozilla BlobCallback documentation> 
diff --git a/src/JSDOM/Generated/Body.hs b/src/JSDOM/Generated/Body.hs
--- a/src/JSDOM/Generated/Body.hs
+++ b/src/JSDOM/Generated/Body.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.arrayBuffer Mozilla Body.arrayBuffer documentation> 
diff --git a/src/JSDOM/Generated/ByteLengthQueuingStrategy.hs b/src/JSDOM/Generated/ByteLengthQueuingStrategy.hs
--- a/src/JSDOM/Generated/ByteLengthQueuingStrategy.hs
+++ b/src/JSDOM/Generated/ByteLengthQueuingStrategy.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ByteLengthQueuingStrategy Mozilla ByteLengthQueuingStrategy documentation> 
diff --git a/src/JSDOM/Generated/CSS.hs b/src/JSDOM/Generated/CSS.hs
--- a/src/JSDOM/Generated/CSS.hs
+++ b/src/JSDOM/Generated/CSS.hs
@@ -17,50 +17,52 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
 supports2 ::
           (MonadDOM m, ToJSString property, ToJSString value) =>
-            CSS -> property -> value -> m Bool
-supports2 self property value
+            property -> value -> m Bool
+supports2 property value
   = liftDOM
-      ((self ^. jsf "supports" [toJSVal property, toJSVal value]) >>=
-         valToBool)
+      (((jsg "CSS") ^. jsf "supports" [toJSVal property, toJSVal value])
+         >>= valToBool)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
 supports2_ ::
            (MonadDOM m, ToJSString property, ToJSString value) =>
-             CSS -> property -> value -> m ()
-supports2_ self property value
+             property -> value -> m ()
+supports2_ property value
   = liftDOM
-      (void (self ^. jsf "supports" [toJSVal property, toJSVal value]))
+      (void
+         ((jsg "CSS") ^. jsf "supports" [toJSVal property, toJSVal value]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
 supports ::
-         (MonadDOM m, ToJSString conditionText) =>
-           CSS -> conditionText -> m Bool
-supports self conditionText
+         (MonadDOM m, ToJSString conditionText) => conditionText -> m Bool
+supports conditionText
   = liftDOM
-      ((self ^. jsf "supports" [toJSVal conditionText]) >>= valToBool)
+      (((jsg "CSS") ^. jsf "supports" [toJSVal conditionText]) >>=
+         valToBool)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
 supports_ ::
-          (MonadDOM m, ToJSString conditionText) =>
-            CSS -> conditionText -> m ()
-supports_ self conditionText
-  = liftDOM (void (self ^. jsf "supports" [toJSVal conditionText]))
+          (MonadDOM m, ToJSString conditionText) => conditionText -> m ()
+supports_ conditionText
+  = liftDOM
+      (void ((jsg "CSS") ^. jsf "supports" [toJSVal conditionText]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.escape Mozilla CSS.escape documentation> 
 escape ::
        (MonadDOM m, ToJSString ident, FromJSString result) =>
-         CSS -> ident -> m result
-escape self ident
+         ident -> m result
+escape ident
   = liftDOM
-      ((self ^. jsf "escape" [toJSVal ident]) >>= fromJSValUnchecked)
+      (((jsg "CSS") ^. jsf "escape" [toJSVal ident]) >>=
+         fromJSValUnchecked)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.escape Mozilla CSS.escape documentation> 
-escape_ :: (MonadDOM m, ToJSString ident) => CSS -> ident -> m ()
-escape_ self ident
-  = liftDOM (void (self ^. jsf "escape" [toJSVal ident]))
+escape_ :: (MonadDOM m, ToJSString ident) => ident -> m ()
+escape_ ident
+  = liftDOM (void ((jsg "CSS") ^. jsf "escape" [toJSVal ident]))
diff --git a/src/JSDOM/Generated/CSSFontFaceLoadEvent.hs b/src/JSDOM/Generated/CSSFontFaceLoadEvent.hs
--- a/src/JSDOM/Generated/CSSFontFaceLoadEvent.hs
+++ b/src/JSDOM/Generated/CSSFontFaceLoadEvent.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent Mozilla CSSFontFaceLoadEvent documentation> 
diff --git a/src/JSDOM/Generated/CSSFontFaceRule.hs b/src/JSDOM/Generated/CSSFontFaceRule.hs
--- a/src/JSDOM/Generated/CSSFontFaceRule.hs
+++ b/src/JSDOM/Generated/CSSFontFaceRule.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceRule.style Mozilla CSSFontFaceRule.style documentation> 
diff --git a/src/JSDOM/Generated/CSSImportRule.hs b/src/JSDOM/Generated/CSSImportRule.hs
--- a/src/JSDOM/Generated/CSSImportRule.hs
+++ b/src/JSDOM/Generated/CSSImportRule.hs
@@ -17,14 +17,14 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.href Mozilla CSSImportRule.href documentation> 
 getHref ::
         (MonadDOM m, FromJSString result) =>
           CSSImportRule -> m (Maybe result)
-getHref self = liftDOM ((self ^. js "href") >>= fromJSVal)
+getHref self = liftDOM ((self ^. js "href") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.href Mozilla CSSImportRule.href documentation> 
 getHrefUnsafe ::
@@ -32,7 +32,7 @@
                 CSSImportRule -> m result
 getHrefUnsafe self
   = liftDOM
-      (((self ^. js "href") >>= fromJSVal) >>=
+      (((self ^. js "href") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.href Mozilla CSSImportRule.href documentation> 
diff --git a/src/JSDOM/Generated/CSSKeyframeRule.hs b/src/JSDOM/Generated/CSSKeyframeRule.hs
--- a/src/JSDOM/Generated/CSSKeyframeRule.hs
+++ b/src/JSDOM/Generated/CSSKeyframeRule.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule.keyText Mozilla CSSKeyframeRule.keyText documentation> 
diff --git a/src/JSDOM/Generated/CSSKeyframesRule.hs b/src/JSDOM/Generated/CSSKeyframesRule.hs
--- a/src/JSDOM/Generated/CSSKeyframesRule.hs
+++ b/src/JSDOM/Generated/CSSKeyframesRule.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.insertRule Mozilla CSSKeyframesRule.insertRule documentation> 
diff --git a/src/JSDOM/Generated/CSSMediaRule.hs b/src/JSDOM/Generated/CSSMediaRule.hs
--- a/src/JSDOM/Generated/CSSMediaRule.hs
+++ b/src/JSDOM/Generated/CSSMediaRule.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.insertRule Mozilla CSSMediaRule.insertRule documentation> 
diff --git a/src/JSDOM/Generated/CSSNamespaceRule.hs b/src/JSDOM/Generated/CSSNamespaceRule.hs
--- a/src/JSDOM/Generated/CSSNamespaceRule.hs
+++ b/src/JSDOM/Generated/CSSNamespaceRule.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSNamespaceRule.namespaceURI Mozilla CSSNamespaceRule.namespaceURI documentation> 
diff --git a/src/JSDOM/Generated/CSSPageRule.hs b/src/JSDOM/Generated/CSSPageRule.hs
--- a/src/JSDOM/Generated/CSSPageRule.hs
+++ b/src/JSDOM/Generated/CSSPageRule.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
@@ -32,7 +32,7 @@
                 (MonadDOM m, FromJSString result) =>
                   CSSPageRule -> m (Maybe result)
 getSelectorText self
-  = liftDOM ((self ^. js "selectorText") >>= fromJSVal)
+  = liftDOM ((self ^. js "selectorText") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
 getSelectorTextUnsafe ::
@@ -40,7 +40,7 @@
                         CSSPageRule -> m result
 getSelectorTextUnsafe self
   = liftDOM
-      (((self ^. js "selectorText") >>= fromJSVal) >>=
+      (((self ^. js "selectorText") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
diff --git a/src/JSDOM/Generated/CSSPrimitiveValue.hs b/src/JSDOM/Generated/CSSPrimitiveValue.hs
--- a/src/JSDOM/Generated/CSSPrimitiveValue.hs
+++ b/src/JSDOM/Generated/CSSPrimitiveValue.hs
@@ -28,7 +28,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.setFloatValue Mozilla CSSPrimitiveValue.setFloatValue documentation> 
diff --git a/src/JSDOM/Generated/CSSRule.hs b/src/JSDOM/Generated/CSSRule.hs
--- a/src/JSDOM/Generated/CSSRule.hs
+++ b/src/JSDOM/Generated/CSSRule.hs
@@ -26,7 +26,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern UNKNOWN_RULE = 0
 pattern STYLE_RULE = 1
@@ -62,7 +62,8 @@
            (MonadDOM m, IsCSSRule self, FromJSString result) =>
              self -> m (Maybe result)
 getCssText self
-  = liftDOM (((toCSSRule self) ^. js "cssText") >>= fromJSVal)
+  = liftDOM
+      (((toCSSRule self) ^. js "cssText") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
 getCssTextUnsafe ::
@@ -70,7 +71,7 @@
                    self -> m result
 getCssTextUnsafe self
   = liftDOM
-      ((((toCSSRule self) ^. js "cssText") >>= fromJSVal) >>=
+      ((((toCSSRule self) ^. js "cssText") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
diff --git a/src/JSDOM/Generated/CSSRuleList.hs b/src/JSDOM/Generated/CSSRuleList.hs
--- a/src/JSDOM/Generated/CSSRuleList.hs
+++ b/src/JSDOM/Generated/CSSRuleList.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList.item Mozilla CSSRuleList.item documentation> 
diff --git a/src/JSDOM/Generated/CSSStyleDeclaration.hs b/src/JSDOM/Generated/CSSStyleDeclaration.hs
--- a/src/JSDOM/Generated/CSSStyleDeclaration.hs
+++ b/src/JSDOM/Generated/CSSStyleDeclaration.hs
@@ -26,7 +26,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyValue Mozilla CSSStyleDeclaration.getPropertyValue documentation> 
@@ -106,7 +106,7 @@
 getPropertyPriority self propertyName
   = liftDOM
       ((self ^. jsf "getPropertyPriority" [toJSVal propertyName]) >>=
-         fromJSVal)
+         fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyPriority Mozilla CSSStyleDeclaration.getPropertyPriority documentation> 
 getPropertyPriority_ ::
@@ -124,7 +124,7 @@
 getPropertyPriorityUnsafe self propertyName
   = liftDOM
       (((self ^. jsf "getPropertyPriority" [toJSVal propertyName]) >>=
-          fromJSVal)
+          fromMaybeJSString)
          >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyPriority Mozilla CSSStyleDeclaration.getPropertyPriority documentation> 
@@ -168,7 +168,7 @@
 getPropertyShorthand self propertyName
   = liftDOM
       ((self ^. jsf "getPropertyShorthand" [toJSVal propertyName]) >>=
-         fromJSVal)
+         fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyShorthand Mozilla CSSStyleDeclaration.getPropertyShorthand documentation> 
 getPropertyShorthand_ ::
@@ -186,7 +186,7 @@
 getPropertyShorthandUnsafe self propertyName
   = liftDOM
       (((self ^. jsf "getPropertyShorthand" [toJSVal propertyName]) >>=
-          fromJSVal)
+          fromMaybeJSString)
          >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyShorthand Mozilla CSSStyleDeclaration.getPropertyShorthand documentation> 
diff --git a/src/JSDOM/Generated/CSSStyleRule.hs b/src/JSDOM/Generated/CSSStyleRule.hs
--- a/src/JSDOM/Generated/CSSStyleRule.hs
+++ b/src/JSDOM/Generated/CSSStyleRule.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
@@ -32,7 +32,7 @@
                 (MonadDOM m, FromJSString result) =>
                   CSSStyleRule -> m (Maybe result)
 getSelectorText self
-  = liftDOM ((self ^. js "selectorText") >>= fromJSVal)
+  = liftDOM ((self ^. js "selectorText") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
 getSelectorTextUnsafe ::
@@ -40,7 +40,7 @@
                         CSSStyleRule -> m result
 getSelectorTextUnsafe self
   = liftDOM
-      (((self ^. js "selectorText") >>= fromJSVal) >>=
+      (((self ^. js "selectorText") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
diff --git a/src/JSDOM/Generated/CSSStyleSheet.hs b/src/JSDOM/Generated/CSSStyleSheet.hs
--- a/src/JSDOM/Generated/CSSStyleSheet.hs
+++ b/src/JSDOM/Generated/CSSStyleSheet.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
diff --git a/src/JSDOM/Generated/CSSSupportsRule.hs b/src/JSDOM/Generated/CSSSupportsRule.hs
--- a/src/JSDOM/Generated/CSSSupportsRule.hs
+++ b/src/JSDOM/Generated/CSSSupportsRule.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.insertRule Mozilla CSSSupportsRule.insertRule documentation> 
diff --git a/src/JSDOM/Generated/CSSValue.hs b/src/JSDOM/Generated/CSSValue.hs
--- a/src/JSDOM/Generated/CSSValue.hs
+++ b/src/JSDOM/Generated/CSSValue.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern CSS_INHERIT = 0
 pattern CSS_PRIMITIVE_VALUE = 1
@@ -38,7 +38,8 @@
            (MonadDOM m, IsCSSValue self, FromJSString result) =>
              self -> m (Maybe result)
 getCssText self
-  = liftDOM (((toCSSValue self) ^. js "cssText") >>= fromJSVal)
+  = liftDOM
+      (((toCSSValue self) ^. js "cssText") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
 getCssTextUnsafe ::
@@ -46,7 +47,7 @@
                    self -> m result
 getCssTextUnsafe self
   = liftDOM
-      ((((toCSSValue self) ^. js "cssText") >>= fromJSVal) >>=
+      ((((toCSSValue self) ^. js "cssText") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
diff --git a/src/JSDOM/Generated/CSSValueList.hs b/src/JSDOM/Generated/CSSValueList.hs
--- a/src/JSDOM/Generated/CSSValueList.hs
+++ b/src/JSDOM/Generated/CSSValueList.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList.item Mozilla CSSValueList.item documentation> 
diff --git a/src/JSDOM/Generated/CanvasCaptureMediaStreamTrack.hs b/src/JSDOM/Generated/CanvasCaptureMediaStreamTrack.hs
--- a/src/JSDOM/Generated/CanvasCaptureMediaStreamTrack.hs
+++ b/src/JSDOM/Generated/CanvasCaptureMediaStreamTrack.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasCaptureMediaStreamTrack.requestFrame Mozilla CanvasCaptureMediaStreamTrack.requestFrame documentation> 
diff --git a/src/JSDOM/Generated/CanvasGradient.hs b/src/JSDOM/Generated/CanvasGradient.hs
--- a/src/JSDOM/Generated/CanvasGradient.hs
+++ b/src/JSDOM/Generated/CanvasGradient.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasGradient.addColorStop Mozilla CanvasGradient.addColorStop documentation> 
diff --git a/src/JSDOM/Generated/CanvasPath.hs b/src/JSDOM/Generated/CanvasPath.hs
--- a/src/JSDOM/Generated/CanvasPath.hs
+++ b/src/JSDOM/Generated/CanvasPath.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.closePath Mozilla CanvasPath.closePath documentation> 
diff --git a/src/JSDOM/Generated/CanvasRenderingContext2D.hs b/src/JSDOM/Generated/CanvasRenderingContext2D.hs
--- a/src/JSDOM/Generated/CanvasRenderingContext2D.hs
+++ b/src/JSDOM/Generated/CanvasRenderingContext2D.hs
@@ -52,7 +52,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.save Mozilla CanvasRenderingContext2D.save documentation> 
diff --git a/src/JSDOM/Generated/CharacterData.hs b/src/JSDOM/Generated/CharacterData.hs
--- a/src/JSDOM/Generated/CharacterData.hs
+++ b/src/JSDOM/Generated/CharacterData.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.substringData Mozilla CharacterData.substringData documentation> 
diff --git a/src/JSDOM/Generated/ChildNode.hs b/src/JSDOM/Generated/ChildNode.hs
--- a/src/JSDOM/Generated/ChildNode.hs
+++ b/src/JSDOM/Generated/ChildNode.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.before Mozilla ChildNode.before documentation> 
diff --git a/src/JSDOM/Generated/ClipboardEvent.hs b/src/JSDOM/Generated/ClipboardEvent.hs
--- a/src/JSDOM/Generated/ClipboardEvent.hs
+++ b/src/JSDOM/Generated/ClipboardEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent Mozilla ClipboardEvent documentation> 
diff --git a/src/JSDOM/Generated/CloseEvent.hs b/src/JSDOM/Generated/CloseEvent.hs
--- a/src/JSDOM/Generated/CloseEvent.hs
+++ b/src/JSDOM/Generated/CloseEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent Mozilla CloseEvent documentation> 
diff --git a/src/JSDOM/Generated/CommandLineAPIHost.hs b/src/JSDOM/Generated/CommandLineAPIHost.hs
--- a/src/JSDOM/Generated/CommandLineAPIHost.hs
+++ b/src/JSDOM/Generated/CommandLineAPIHost.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.clearConsoleMessages Mozilla CommandLineAPIHost.clearConsoleMessages documentation> 
diff --git a/src/JSDOM/Generated/Comment.hs b/src/JSDOM/Generated/Comment.hs
--- a/src/JSDOM/Generated/Comment.hs
+++ b/src/JSDOM/Generated/Comment.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Comment Mozilla Comment documentation> 
diff --git a/src/JSDOM/Generated/CompositionEvent.hs b/src/JSDOM/Generated/CompositionEvent.hs
--- a/src/JSDOM/Generated/CompositionEvent.hs
+++ b/src/JSDOM/Generated/CompositionEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent Mozilla CompositionEvent documentation> 
diff --git a/src/JSDOM/Generated/ConvolverNode.hs b/src/JSDOM/Generated/ConvolverNode.hs
--- a/src/JSDOM/Generated/ConvolverNode.hs
+++ b/src/JSDOM/Generated/ConvolverNode.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
diff --git a/src/JSDOM/Generated/Coordinates.hs b/src/JSDOM/Generated/Coordinates.hs
--- a/src/JSDOM/Generated/Coordinates.hs
+++ b/src/JSDOM/Generated/Coordinates.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.latitude Mozilla Coordinates.latitude documentation> 
diff --git a/src/JSDOM/Generated/CountQueuingStrategy.hs b/src/JSDOM/Generated/CountQueuingStrategy.hs
--- a/src/JSDOM/Generated/CountQueuingStrategy.hs
+++ b/src/JSDOM/Generated/CountQueuingStrategy.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CountQueuingStrategy Mozilla CountQueuingStrategy documentation> 
diff --git a/src/JSDOM/Generated/Counter.hs b/src/JSDOM/Generated/Counter.hs
--- a/src/JSDOM/Generated/Counter.hs
+++ b/src/JSDOM/Generated/Counter.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Counter.identifier Mozilla Counter.identifier documentation> 
diff --git a/src/JSDOM/Generated/Crypto.hs b/src/JSDOM/Generated/Crypto.hs
--- a/src/JSDOM/Generated/Crypto.hs
+++ b/src/JSDOM/Generated/Crypto.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.getRandomValues Mozilla Crypto.getRandomValues documentation> 
diff --git a/src/JSDOM/Generated/CryptoKey.hs b/src/JSDOM/Generated/CryptoKey.hs
--- a/src/JSDOM/Generated/CryptoKey.hs
+++ b/src/JSDOM/Generated/CryptoKey.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.type Mozilla CryptoKey.type documentation> 
diff --git a/src/JSDOM/Generated/CustomElementRegistry.hs b/src/JSDOM/Generated/CustomElementRegistry.hs
--- a/src/JSDOM/Generated/CustomElementRegistry.hs
+++ b/src/JSDOM/Generated/CustomElementRegistry.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry.define Mozilla CustomElementRegistry.define documentation> 
diff --git a/src/JSDOM/Generated/CustomEvent.hs b/src/JSDOM/Generated/CustomEvent.hs
--- a/src/JSDOM/Generated/CustomEvent.hs
+++ b/src/JSDOM/Generated/CustomEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent Mozilla CustomEvent documentation> 
diff --git a/src/JSDOM/Generated/DOMError.hs b/src/JSDOM/Generated/DOMError.hs
--- a/src/JSDOM/Generated/DOMError.hs
+++ b/src/JSDOM/Generated/DOMError.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMError.name Mozilla DOMError.name documentation> 
diff --git a/src/JSDOM/Generated/DOMException.hs b/src/JSDOM/Generated/DOMException.hs
--- a/src/JSDOM/Generated/DOMException.hs
+++ b/src/JSDOM/Generated/DOMException.hs
@@ -29,7 +29,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException Mozilla DOMException documentation> 
diff --git a/src/JSDOM/Generated/DOMImplementation.hs b/src/JSDOM/Generated/DOMImplementation.hs
--- a/src/JSDOM/Generated/DOMImplementation.hs
+++ b/src/JSDOM/Generated/DOMImplementation.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocumentType Mozilla DOMImplementation.createDocumentType documentation> 
diff --git a/src/JSDOM/Generated/DOMNamedFlowCollection.hs b/src/JSDOM/Generated/DOMNamedFlowCollection.hs
--- a/src/JSDOM/Generated/DOMNamedFlowCollection.hs
+++ b/src/JSDOM/Generated/DOMNamedFlowCollection.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.item Mozilla WebKitNamedFlowCollection.item documentation> 
diff --git a/src/JSDOM/Generated/DOMParser.hs b/src/JSDOM/Generated/DOMParser.hs
--- a/src/JSDOM/Generated/DOMParser.hs
+++ b/src/JSDOM/Generated/DOMParser.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser Mozilla DOMParser documentation> 
diff --git a/src/JSDOM/Generated/DOMPoint.hs b/src/JSDOM/Generated/DOMPoint.hs
--- a/src/JSDOM/Generated/DOMPoint.hs
+++ b/src/JSDOM/Generated/DOMPoint.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint Mozilla DOMPoint documentation> 
@@ -36,17 +36,17 @@
          new (jsg "DOMPoint") [toJSVal x, toJSVal y, toJSVal z, toJSVal w])
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.fromPoint Mozilla DOMPoint.fromPoint documentation> 
-fromPoint ::
-          (MonadDOM m) => DOMPoint -> Maybe DOMPointInit -> m DOMPoint
-fromPoint self other
+fromPoint :: (MonadDOM m) => Maybe DOMPointInit -> m DOMPoint
+fromPoint other
   = liftDOM
-      ((self ^. jsf "fromPoint" [toJSVal other]) >>= fromJSValUnchecked)
+      (((jsg "DOMPoint") ^. jsf "fromPoint" [toJSVal other]) >>=
+         fromJSValUnchecked)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.fromPoint Mozilla DOMPoint.fromPoint documentation> 
-fromPoint_ ::
-           (MonadDOM m) => DOMPoint -> Maybe DOMPointInit -> m ()
-fromPoint_ self other
-  = liftDOM (void (self ^. jsf "fromPoint" [toJSVal other]))
+fromPoint_ :: (MonadDOM m) => Maybe DOMPointInit -> m ()
+fromPoint_ other
+  = liftDOM
+      (void ((jsg "DOMPoint") ^. jsf "fromPoint" [toJSVal other]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.x Mozilla DOMPoint.x documentation> 
 setX :: (MonadDOM m) => DOMPoint -> Double -> m ()
diff --git a/src/JSDOM/Generated/DOMPointReadOnly.hs b/src/JSDOM/Generated/DOMPointReadOnly.hs
--- a/src/JSDOM/Generated/DOMPointReadOnly.hs
+++ b/src/JSDOM/Generated/DOMPointReadOnly.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly Mozilla DOMPointReadOnly documentation> 
@@ -41,21 +41,18 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.fromPoint Mozilla DOMPointReadOnly.fromPoint documentation> 
 fromPoint ::
-          (MonadDOM m, IsDOMPointReadOnly self) =>
-            self -> Maybe DOMPointInit -> m DOMPointReadOnly
-fromPoint self other
+          (MonadDOM m) => Maybe DOMPointInit -> m DOMPointReadOnly
+fromPoint other
   = liftDOM
-      (((toDOMPointReadOnly self) ^. jsf "fromPoint" [toJSVal other]) >>=
+      (((jsg "DOMPointReadOnly") ^. jsf "fromPoint" [toJSVal other]) >>=
          fromJSValUnchecked)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.fromPoint Mozilla DOMPointReadOnly.fromPoint documentation> 
-fromPoint_ ::
-           (MonadDOM m, IsDOMPointReadOnly self) =>
-             self -> Maybe DOMPointInit -> m ()
-fromPoint_ self other
+fromPoint_ :: (MonadDOM m) => Maybe DOMPointInit -> m ()
+fromPoint_ other
   = liftDOM
       (void
-         ((toDOMPointReadOnly self) ^. jsf "fromPoint" [toJSVal other]))
+         ((jsg "DOMPointReadOnly") ^. jsf "fromPoint" [toJSVal other]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.x Mozilla DOMPointReadOnly.x documentation> 
 getX :: (MonadDOM m, IsDOMPointReadOnly self) => self -> m Double
diff --git a/src/JSDOM/Generated/DOMRect.hs b/src/JSDOM/Generated/DOMRect.hs
--- a/src/JSDOM/Generated/DOMRect.hs
+++ b/src/JSDOM/Generated/DOMRect.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect Mozilla DOMRect documentation> 
@@ -32,16 +32,17 @@
            [toJSVal x, toJSVal y, toJSVal width, toJSVal height])
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.fromRect Mozilla DOMRect.fromRect documentation> 
-fromRect ::
-         (MonadDOM m) => DOMRect -> Maybe DOMRectInit -> m DOMRect
-fromRect self other
+fromRect :: (MonadDOM m) => Maybe DOMRectInit -> m DOMRect
+fromRect other
   = liftDOM
-      ((self ^. jsf "fromRect" [toJSVal other]) >>= fromJSValUnchecked)
+      (((jsg "DOMRect") ^. jsf "fromRect" [toJSVal other]) >>=
+         fromJSValUnchecked)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.fromRect Mozilla DOMRect.fromRect documentation> 
-fromRect_ :: (MonadDOM m) => DOMRect -> Maybe DOMRectInit -> m ()
-fromRect_ self other
-  = liftDOM (void (self ^. jsf "fromRect" [toJSVal other]))
+fromRect_ :: (MonadDOM m) => Maybe DOMRectInit -> m ()
+fromRect_ other
+  = liftDOM
+      (void ((jsg "DOMRect") ^. jsf "fromRect" [toJSVal other]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.x Mozilla DOMRect.x documentation> 
 setX :: (MonadDOM m) => DOMRect -> Double -> m ()
diff --git a/src/JSDOM/Generated/DOMRectReadOnly.hs b/src/JSDOM/Generated/DOMRectReadOnly.hs
--- a/src/JSDOM/Generated/DOMRectReadOnly.hs
+++ b/src/JSDOM/Generated/DOMRectReadOnly.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly Mozilla DOMRectReadOnly documentation> 
@@ -34,21 +34,17 @@
            [toJSVal x, toJSVal y, toJSVal width, toJSVal height])
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.fromRect Mozilla DOMRectReadOnly.fromRect documentation> 
-fromRect ::
-         (MonadDOM m, IsDOMRectReadOnly self) =>
-           self -> Maybe DOMRectInit -> m DOMRectReadOnly
-fromRect self other
+fromRect :: (MonadDOM m) => Maybe DOMRectInit -> m DOMRectReadOnly
+fromRect other
   = liftDOM
-      (((toDOMRectReadOnly self) ^. jsf "fromRect" [toJSVal other]) >>=
+      (((jsg "DOMRectReadOnly") ^. jsf "fromRect" [toJSVal other]) >>=
          fromJSValUnchecked)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.fromRect Mozilla DOMRectReadOnly.fromRect documentation> 
-fromRect_ ::
-          (MonadDOM m, IsDOMRectReadOnly self) =>
-            self -> Maybe DOMRectInit -> m ()
-fromRect_ self other
+fromRect_ :: (MonadDOM m) => Maybe DOMRectInit -> m ()
+fromRect_ other
   = liftDOM
-      (void ((toDOMRectReadOnly self) ^. jsf "fromRect" [toJSVal other]))
+      (void ((jsg "DOMRectReadOnly") ^. jsf "fromRect" [toJSVal other]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.x Mozilla DOMRectReadOnly.x documentation> 
 getX :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
diff --git a/src/JSDOM/Generated/DOMStringList.hs b/src/JSDOM/Generated/DOMStringList.hs
--- a/src/JSDOM/Generated/DOMStringList.hs
+++ b/src/JSDOM/Generated/DOMStringList.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
@@ -25,7 +25,8 @@
      (MonadDOM m, FromJSString result) =>
        DOMStringList -> Word -> m (Maybe result)
 item self index
-  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+  = liftDOM
+      ((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
 item_ :: (MonadDOM m) => DOMStringList -> Word -> m ()
@@ -38,7 +39,7 @@
              DOMStringList -> Word -> m result
 itemUnsafe self index
   = liftDOM
-      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+      (((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
diff --git a/src/JSDOM/Generated/DOMStringMap.hs b/src/JSDOM/Generated/DOMStringMap.hs
--- a/src/JSDOM/Generated/DOMStringMap.hs
+++ b/src/JSDOM/Generated/DOMStringMap.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringMap.get Mozilla DOMStringMap.get documentation> 
diff --git a/src/JSDOM/Generated/DOMTokenList.hs b/src/JSDOM/Generated/DOMTokenList.hs
--- a/src/JSDOM/Generated/DOMTokenList.hs
+++ b/src/JSDOM/Generated/DOMTokenList.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
@@ -26,7 +26,8 @@
      (MonadDOM m, FromJSString result) =>
        DOMTokenList -> Word -> m (Maybe result)
 item self index
-  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+  = liftDOM
+      ((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
 item_ :: (MonadDOM m) => DOMTokenList -> Word -> m ()
@@ -39,7 +40,7 @@
              DOMTokenList -> Word -> m result
 itemUnsafe self index
   = liftDOM
-      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+      (((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
diff --git a/src/JSDOM/Generated/DataCue.hs b/src/JSDOM/Generated/DataCue.hs
--- a/src/JSDOM/Generated/DataCue.hs
+++ b/src/JSDOM/Generated/DataCue.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue Mozilla WebKitDataCue documentation> 
diff --git a/src/JSDOM/Generated/DataTransfer.hs b/src/JSDOM/Generated/DataTransfer.hs
--- a/src/JSDOM/Generated/DataTransfer.hs
+++ b/src/JSDOM/Generated/DataTransfer.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.setDragImage Mozilla DataTransfer.setDragImage documentation> 
diff --git a/src/JSDOM/Generated/DataTransferItem.hs b/src/JSDOM/Generated/DataTransferItem.hs
--- a/src/JSDOM/Generated/DataTransferItem.hs
+++ b/src/JSDOM/Generated/DataTransferItem.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsString Mozilla DataTransferItem.getAsString documentation> 
diff --git a/src/JSDOM/Generated/DataTransferItemList.hs b/src/JSDOM/Generated/DataTransferItemList.hs
--- a/src/JSDOM/Generated/DataTransferItemList.hs
+++ b/src/JSDOM/Generated/DataTransferItemList.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.item Mozilla DataTransferItemList.item documentation> 
diff --git a/src/JSDOM/Generated/Database.hs b/src/JSDOM/Generated/Database.hs
--- a/src/JSDOM/Generated/Database.hs
+++ b/src/JSDOM/Generated/Database.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.changeVersion Mozilla Database.changeVersion documentation> 
diff --git a/src/JSDOM/Generated/DatabaseCallback.hs b/src/JSDOM/Generated/DatabaseCallback.hs
--- a/src/JSDOM/Generated/DatabaseCallback.hs
+++ b/src/JSDOM/Generated/DatabaseCallback.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DatabaseCallback Mozilla DatabaseCallback documentation> 
diff --git a/src/JSDOM/Generated/DedicatedWorkerGlobalScope.hs b/src/JSDOM/Generated/DedicatedWorkerGlobalScope.hs
--- a/src/JSDOM/Generated/DedicatedWorkerGlobalScope.hs
+++ b/src/JSDOM/Generated/DedicatedWorkerGlobalScope.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope.postMessage Mozilla DedicatedWorkerGlobalScope.postMessage documentation> 
@@ -32,4 +32,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/JSDOM/Generated/DelayNode.hs b/src/JSDOM/Generated/DelayNode.hs
--- a/src/JSDOM/Generated/DelayNode.hs
+++ b/src/JSDOM/Generated/DelayNode.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DelayNode.delayTime Mozilla DelayNode.delayTime documentation> 
diff --git a/src/JSDOM/Generated/DeviceMotionEvent.hs b/src/JSDOM/Generated/DeviceMotionEvent.hs
--- a/src/JSDOM/Generated/DeviceMotionEvent.hs
+++ b/src/JSDOM/Generated/DeviceMotionEvent.hs
@@ -22,7 +22,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.initDeviceMotionEvent Mozilla DeviceMotionEvent.initDeviceMotionEvent documentation> 
diff --git a/src/JSDOM/Generated/DeviceOrientationEvent.hs b/src/JSDOM/Generated/DeviceOrientationEvent.hs
--- a/src/JSDOM/Generated/DeviceOrientationEvent.hs
+++ b/src/JSDOM/Generated/DeviceOrientationEvent.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.initDeviceOrientationEvent Mozilla DeviceOrientationEvent.initDeviceOrientationEvent documentation> 
diff --git a/src/JSDOM/Generated/DeviceProximityEvent.hs b/src/JSDOM/Generated/DeviceProximityEvent.hs
--- a/src/JSDOM/Generated/DeviceProximityEvent.hs
+++ b/src/JSDOM/Generated/DeviceProximityEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent Mozilla DeviceProximityEvent documentation> 
diff --git a/src/JSDOM/Generated/Document.hs b/src/JSDOM/Generated/Document.hs
--- a/src/JSDOM/Generated/Document.hs
+++ b/src/JSDOM/Generated/Document.hs
@@ -71,7 +71,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getAnimations Mozilla Document.getAnimations documentation> 
@@ -1215,7 +1215,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")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.styleSheets Mozilla Document.styleSheets documentation> 
 getStyleSheets ::
@@ -1368,7 +1369,8 @@
                             self -> m (Maybe result)
 getPreferredStylesheetSet self
   = liftDOM
-      (((toDocument self) ^. js "preferredStylesheetSet") >>= fromJSVal)
+      (((toDocument self) ^. js "preferredStylesheetSet") >>=
+         fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.preferredStylesheetSet Mozilla Document.preferredStylesheetSet documentation> 
 getPreferredStylesheetSetUnsafe ::
@@ -1376,7 +1378,8 @@
                                   self -> m result
 getPreferredStylesheetSetUnsafe self
   = liftDOM
-      ((((toDocument self) ^. js "preferredStylesheetSet") >>= fromJSVal)
+      ((((toDocument self) ^. js "preferredStylesheetSet") >>=
+          fromMaybeJSString)
          >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.preferredStylesheetSet Mozilla Document.preferredStylesheetSet documentation> 
@@ -1402,7 +1405,8 @@
                            self -> m (Maybe result)
 getSelectedStylesheetSet self
   = liftDOM
-      (((toDocument self) ^. js "selectedStylesheetSet") >>= fromJSVal)
+      (((toDocument self) ^. js "selectedStylesheetSet") >>=
+         fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.selectedStylesheetSet Mozilla Document.selectedStylesheetSet documentation> 
 getSelectedStylesheetSetUnsafe ::
@@ -1410,7 +1414,8 @@
                                  self -> m result
 getSelectedStylesheetSetUnsafe self
   = liftDOM
-      ((((toDocument self) ^. js "selectedStylesheetSet") >>= fromJSVal)
+      ((((toDocument self) ^. js "selectedStylesheetSet") >>=
+          fromMaybeJSString)
          >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.selectedStylesheetSet Mozilla Document.selectedStylesheetSet documentation> 
@@ -1427,7 +1432,8 @@
                (MonadDOM m, IsDocument self, FromJSString result) =>
                  self -> m (Maybe result)
 getXmlEncoding self
-  = liftDOM (((toDocument self) ^. js "xmlEncoding") >>= fromJSVal)
+  = liftDOM
+      (((toDocument self) ^. js "xmlEncoding") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlEncoding Mozilla Document.xmlEncoding documentation> 
 getXmlEncodingUnsafe ::
@@ -1435,8 +1441,8 @@
                        self -> m result
 getXmlEncodingUnsafe self
   = liftDOM
-      ((((toDocument self) ^. js "xmlEncoding") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+      ((((toDocument self) ^. js "xmlEncoding") >>= fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlEncoding Mozilla Document.xmlEncoding documentation> 
 getXmlEncodingUnchecked ::
@@ -1458,7 +1464,8 @@
               (MonadDOM m, IsDocument self, FromJSString result) =>
                 self -> m (Maybe result)
 getXmlVersion self
-  = liftDOM (((toDocument self) ^. js "xmlVersion") >>= fromJSVal)
+  = liftDOM
+      (((toDocument self) ^. js "xmlVersion") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
 getXmlVersionUnsafe ::
@@ -1466,7 +1473,7 @@
                       self -> m result
 getXmlVersionUnsafe self
   = liftDOM
-      ((((toDocument self) ^. js "xmlVersion") >>= fromJSVal) >>=
+      ((((toDocument self) ^. js "xmlVersion") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
diff --git a/src/JSDOM/Generated/DocumentAndElementEventHandlers.hs b/src/JSDOM/Generated/DocumentAndElementEventHandlers.hs
--- a/src/JSDOM/Generated/DocumentAndElementEventHandlers.hs
+++ b/src/JSDOM/Generated/DocumentAndElementEventHandlers.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentAndElementEventHandlers.oncopy Mozilla DocumentAndElementEventHandlers.oncopy documentation> 
diff --git a/src/JSDOM/Generated/DocumentFragment.hs b/src/JSDOM/Generated/DocumentFragment.hs
--- a/src/JSDOM/Generated/DocumentFragment.hs
+++ b/src/JSDOM/Generated/DocumentFragment.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment Mozilla DocumentFragment documentation> 
diff --git a/src/JSDOM/Generated/DocumentOrShadowRoot.hs b/src/JSDOM/Generated/DocumentOrShadowRoot.hs
--- a/src/JSDOM/Generated/DocumentOrShadowRoot.hs
+++ b/src/JSDOM/Generated/DocumentOrShadowRoot.hs
@@ -22,7 +22,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.elementFromPoint Mozilla DocumentOrShadowRoot.elementFromPoint documentation> 
diff --git a/src/JSDOM/Generated/DocumentTimeline.hs b/src/JSDOM/Generated/DocumentTimeline.hs
--- a/src/JSDOM/Generated/DocumentTimeline.hs
+++ b/src/JSDOM/Generated/DocumentTimeline.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentTimeline Mozilla DocumentTimeline documentation> 
diff --git a/src/JSDOM/Generated/DocumentType.hs b/src/JSDOM/Generated/DocumentType.hs
--- a/src/JSDOM/Generated/DocumentType.hs
+++ b/src/JSDOM/Generated/DocumentType.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.name Mozilla DocumentType.name documentation> 
diff --git a/src/JSDOM/Generated/DynamicsCompressorNode.hs b/src/JSDOM/Generated/DynamicsCompressorNode.hs
--- a/src/JSDOM/Generated/DynamicsCompressorNode.hs
+++ b/src/JSDOM/Generated/DynamicsCompressorNode.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.threshold Mozilla DynamicsCompressorNode.threshold documentation> 
diff --git a/src/JSDOM/Generated/EXTBlendMinMax.hs b/src/JSDOM/Generated/EXTBlendMinMax.hs
--- a/src/JSDOM/Generated/EXTBlendMinMax.hs
+++ b/src/JSDOM/Generated/EXTBlendMinMax.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern MIN_EXT = 32775
 pattern MAX_EXT = 32776
diff --git a/src/JSDOM/Generated/EXTTextureFilterAnisotropic.hs b/src/JSDOM/Generated/EXTTextureFilterAnisotropic.hs
--- a/src/JSDOM/Generated/EXTTextureFilterAnisotropic.hs
+++ b/src/JSDOM/Generated/EXTTextureFilterAnisotropic.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern TEXTURE_MAX_ANISOTROPY_EXT = 34046
 pattern MAX_TEXTURE_MAX_ANISOTROPY_EXT = 34047
diff --git a/src/JSDOM/Generated/EXTsRGB.hs b/src/JSDOM/Generated/EXTsRGB.hs
--- a/src/JSDOM/Generated/EXTsRGB.hs
+++ b/src/JSDOM/Generated/EXTsRGB.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern SRGB_EXT = 35904
 pattern SRGB_ALPHA_EXT = 35906
diff --git a/src/JSDOM/Generated/Element.hs b/src/JSDOM/Generated/Element.hs
--- a/src/JSDOM/Generated/Element.hs
+++ b/src/JSDOM/Generated/Element.hs
@@ -58,7 +58,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttributes Mozilla Element.hasAttributes documentation> 
@@ -94,7 +94,7 @@
 getAttribute self qualifiedName
   = liftDOM
       (((toElement self) ^. jsf "getAttribute" [toJSVal qualifiedName])
-         >>= fromJSVal)
+         >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttribute Mozilla Element.getAttribute documentation> 
 getAttribute_ ::
@@ -113,7 +113,7 @@
 getAttributeUnsafe self qualifiedName
   = liftDOM
       ((((toElement self) ^. jsf "getAttribute" [toJSVal qualifiedName])
-          >>= fromJSVal)
+          >>= fromMaybeJSString)
          >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttribute Mozilla Element.getAttribute documentation> 
@@ -135,7 +135,7 @@
   = liftDOM
       (((toElement self) ^. jsf "getAttributeNS"
           [toJSVal namespaceURI, toJSVal localName])
-         >>= fromJSVal)
+         >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNS Mozilla Element.getAttributeNS documentation> 
 getAttributeNS_ ::
@@ -157,7 +157,7 @@
   = liftDOM
       ((((toElement self) ^. jsf "getAttributeNS"
            [toJSVal namespaceURI, toJSVal localName])
-          >>= fromJSVal)
+          >>= fromMaybeJSString)
          >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNS Mozilla Element.getAttributeNS documentation> 
@@ -769,7 +769,8 @@
                 (MonadDOM m, IsElement self, FromJSString result) =>
                   self -> m (Maybe result)
 getNamespaceURI self
-  = liftDOM (((toElement self) ^. js "namespaceURI") >>= fromJSVal)
+  = liftDOM
+      (((toElement self) ^. js "namespaceURI") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.namespaceURI Mozilla Element.namespaceURI documentation> 
 getNamespaceURIUnsafe ::
@@ -777,8 +778,8 @@
                         self -> m result
 getNamespaceURIUnsafe self
   = liftDOM
-      ((((toElement self) ^. js "namespaceURI") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+      ((((toElement self) ^. js "namespaceURI") >>= fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.namespaceURI Mozilla Element.namespaceURI documentation> 
 getNamespaceURIUnchecked ::
@@ -793,7 +794,7 @@
           (MonadDOM m, IsElement self, FromJSString result) =>
             self -> m (Maybe result)
 getPrefix self
-  = liftDOM (((toElement self) ^. js "prefix") >>= fromJSVal)
+  = liftDOM (((toElement self) ^. js "prefix") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.prefix Mozilla Element.prefix documentation> 
 getPrefixUnsafe ::
@@ -801,7 +802,7 @@
                   self -> m result
 getPrefixUnsafe self
   = liftDOM
-      ((((toElement self) ^. js "prefix") >>= fromJSVal) >>=
+      ((((toElement self) ^. js "prefix") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.prefix Mozilla Element.prefix documentation> 
diff --git a/src/JSDOM/Generated/ElementCSSInlineStyle.hs b/src/JSDOM/Generated/ElementCSSInlineStyle.hs
--- a/src/JSDOM/Generated/ElementCSSInlineStyle.hs
+++ b/src/JSDOM/Generated/ElementCSSInlineStyle.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle.style Mozilla ElementCSSInlineStyle.style documentation> 
diff --git a/src/JSDOM/Generated/ErrorEvent.hs b/src/JSDOM/Generated/ErrorEvent.hs
--- a/src/JSDOM/Generated/ErrorEvent.hs
+++ b/src/JSDOM/Generated/ErrorEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent Mozilla ErrorEvent documentation> 
diff --git a/src/JSDOM/Generated/EventListener.hs b/src/JSDOM/Generated/EventListener.hs
--- a/src/JSDOM/Generated/EventListener.hs
+++ b/src/JSDOM/Generated/EventListener.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/EventListener.handleEvent Mozilla EventListener.handleEvent documentation> 
diff --git a/src/JSDOM/Generated/EventSource.hs b/src/JSDOM/Generated/EventSource.hs
--- a/src/JSDOM/Generated/EventSource.hs
+++ b/src/JSDOM/Generated/EventSource.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource Mozilla EventSource documentation> 
@@ -54,12 +54,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/JSDOM/Generated/File.hs b/src/JSDOM/Generated/File.hs
--- a/src/JSDOM/Generated/File.hs
+++ b/src/JSDOM/Generated/File.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/File Mozilla File documentation> 
diff --git a/src/JSDOM/Generated/FileError.hs b/src/JSDOM/Generated/FileError.hs
--- a/src/JSDOM/Generated/FileError.hs
+++ b/src/JSDOM/Generated/FileError.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern NOT_FOUND_ERR = 1
 pattern SECURITY_ERR = 2
diff --git a/src/JSDOM/Generated/FileException.hs b/src/JSDOM/Generated/FileException.hs
--- a/src/JSDOM/Generated/FileException.hs
+++ b/src/JSDOM/Generated/FileException.hs
@@ -22,7 +22,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileException.toString Mozilla FileException.toString documentation> 
diff --git a/src/JSDOM/Generated/FileList.hs b/src/JSDOM/Generated/FileList.hs
--- a/src/JSDOM/Generated/FileList.hs
+++ b/src/JSDOM/Generated/FileList.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.item Mozilla FileList.item documentation> 
diff --git a/src/JSDOM/Generated/FileReader.hs b/src/JSDOM/Generated/FileReader.hs
--- a/src/JSDOM/Generated/FileReader.hs
+++ b/src/JSDOM/Generated/FileReader.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader Mozilla FileReader documentation> 
@@ -91,24 +91,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/JSDOM/Generated/FileReaderSync.hs b/src/JSDOM/Generated/FileReaderSync.hs
--- a/src/JSDOM/Generated/FileReaderSync.hs
+++ b/src/JSDOM/Generated/FileReaderSync.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync Mozilla FileReaderSync documentation> 
diff --git a/src/JSDOM/Generated/FocusEvent.hs b/src/JSDOM/Generated/FocusEvent.hs
--- a/src/JSDOM/Generated/FocusEvent.hs
+++ b/src/JSDOM/Generated/FocusEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent Mozilla FocusEvent documentation> 
diff --git a/src/JSDOM/Generated/FontFace.hs b/src/JSDOM/Generated/FontFace.hs
--- a/src/JSDOM/Generated/FontFace.hs
+++ b/src/JSDOM/Generated/FontFace.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace Mozilla FontFace documentation> 
diff --git a/src/JSDOM/Generated/FontFaceSet.hs b/src/JSDOM/Generated/FontFaceSet.hs
--- a/src/JSDOM/Generated/FontFaceSet.hs
+++ b/src/JSDOM/Generated/FontFaceSet.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet Mozilla FontFaceSet documentation> 
diff --git a/src/JSDOM/Generated/FormData.hs b/src/JSDOM/Generated/FormData.hs
--- a/src/JSDOM/Generated/FormData.hs
+++ b/src/JSDOM/Generated/FormData.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData Mozilla FormData documentation> 
diff --git a/src/JSDOM/Generated/GainNode.hs b/src/JSDOM/Generated/GainNode.hs
--- a/src/JSDOM/Generated/GainNode.hs
+++ b/src/JSDOM/Generated/GainNode.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/GainNode.gain Mozilla GainNode.gain documentation> 
diff --git a/src/JSDOM/Generated/Gamepad.hs b/src/JSDOM/Generated/Gamepad.hs
--- a/src/JSDOM/Generated/Gamepad.hs
+++ b/src/JSDOM/Generated/Gamepad.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.id Mozilla Gamepad.id documentation> 
diff --git a/src/JSDOM/Generated/GamepadButton.hs b/src/JSDOM/Generated/GamepadButton.hs
--- a/src/JSDOM/Generated/GamepadButton.hs
+++ b/src/JSDOM/Generated/GamepadButton.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadButton.pressed Mozilla GamepadButton.pressed documentation> 
diff --git a/src/JSDOM/Generated/GamepadEvent.hs b/src/JSDOM/Generated/GamepadEvent.hs
--- a/src/JSDOM/Generated/GamepadEvent.hs
+++ b/src/JSDOM/Generated/GamepadEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent Mozilla GamepadEvent documentation> 
diff --git a/src/JSDOM/Generated/Geolocation.hs b/src/JSDOM/Generated/Geolocation.hs
--- a/src/JSDOM/Generated/Geolocation.hs
+++ b/src/JSDOM/Generated/Geolocation.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition Mozilla Geolocation.getCurrentPosition documentation> 
diff --git a/src/JSDOM/Generated/Geoposition.hs b/src/JSDOM/Generated/Geoposition.hs
--- a/src/JSDOM/Generated/Geoposition.hs
+++ b/src/JSDOM/Generated/Geoposition.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Geoposition.coords Mozilla Geoposition.coords documentation> 
diff --git a/src/JSDOM/Generated/GlobalCrypto.hs b/src/JSDOM/Generated/GlobalCrypto.hs
--- a/src/JSDOM/Generated/GlobalCrypto.hs
+++ b/src/JSDOM/Generated/GlobalCrypto.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalCrypto.crypto Mozilla GlobalCrypto.crypto documentation> 
diff --git a/src/JSDOM/Generated/GlobalEventHandlers.hs b/src/JSDOM/Generated/GlobalEventHandlers.hs
--- a/src/JSDOM/Generated/GlobalEventHandlers.hs
+++ b/src/JSDOM/Generated/GlobalEventHandlers.hs
@@ -33,14 +33,14 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.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 ::
@@ -59,7 +59,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 ::
@@ -167,13 +167,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 ::
@@ -209,7 +209,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 ::
@@ -227,7 +227,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 ::
@@ -299,7 +299,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/JSDOM/Generated/GlobalPerformance.hs b/src/JSDOM/Generated/GlobalPerformance.hs
--- a/src/JSDOM/Generated/GlobalPerformance.hs
+++ b/src/JSDOM/Generated/GlobalPerformance.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalPerformance.performance Mozilla GlobalPerformance.performance documentation> 
diff --git a/src/JSDOM/Generated/HTMLAllCollection.hs b/src/JSDOM/Generated/HTMLAllCollection.hs
--- a/src/JSDOM/Generated/HTMLAllCollection.hs
+++ b/src/JSDOM/Generated/HTMLAllCollection.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.item Mozilla HTMLAllCollection.item documentation> 
diff --git a/src/JSDOM/Generated/HTMLAnchorElement.hs b/src/JSDOM/Generated/HTMLAnchorElement.hs
--- a/src/JSDOM/Generated/HTMLAnchorElement.hs
+++ b/src/JSDOM/Generated/HTMLAnchorElement.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.charset Mozilla HTMLAnchorElement.charset documentation> 
diff --git a/src/JSDOM/Generated/HTMLAppletElement.hs b/src/JSDOM/Generated/HTMLAppletElement.hs
--- a/src/JSDOM/Generated/HTMLAppletElement.hs
+++ b/src/JSDOM/Generated/HTMLAppletElement.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.align Mozilla HTMLAppletElement.align documentation> 
diff --git a/src/JSDOM/Generated/HTMLAreaElement.hs b/src/JSDOM/Generated/HTMLAreaElement.hs
--- a/src/JSDOM/Generated/HTMLAreaElement.hs
+++ b/src/JSDOM/Generated/HTMLAreaElement.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.alt Mozilla HTMLAreaElement.alt documentation> 
diff --git a/src/JSDOM/Generated/HTMLAttachmentElement.hs b/src/JSDOM/Generated/HTMLAttachmentElement.hs
--- a/src/JSDOM/Generated/HTMLAttachmentElement.hs
+++ b/src/JSDOM/Generated/HTMLAttachmentElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAttachmentElement.file Mozilla HTMLAttachmentElement.file documentation> 
diff --git a/src/JSDOM/Generated/HTMLBRElement.hs b/src/JSDOM/Generated/HTMLBRElement.hs
--- a/src/JSDOM/Generated/HTMLBRElement.hs
+++ b/src/JSDOM/Generated/HTMLBRElement.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBRElement.clear Mozilla HTMLBRElement.clear documentation> 
diff --git a/src/JSDOM/Generated/HTMLBaseElement.hs b/src/JSDOM/Generated/HTMLBaseElement.hs
--- a/src/JSDOM/Generated/HTMLBaseElement.hs
+++ b/src/JSDOM/Generated/HTMLBaseElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.href Mozilla HTMLBaseElement.href documentation> 
diff --git a/src/JSDOM/Generated/HTMLBodyElement.hs b/src/JSDOM/Generated/HTMLBodyElement.hs
--- a/src/JSDOM/Generated/HTMLBodyElement.hs
+++ b/src/JSDOM/Generated/HTMLBodyElement.hs
@@ -23,7 +23,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.aLink Mozilla HTMLBodyElement.aLink documentation> 
@@ -93,15 +93,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
@@ -113,7 +113,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/JSDOM/Generated/HTMLButtonElement.hs b/src/JSDOM/Generated/HTMLButtonElement.hs
--- a/src/JSDOM/Generated/HTMLButtonElement.hs
+++ b/src/JSDOM/Generated/HTMLButtonElement.hs
@@ -23,7 +23,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.checkValidity Mozilla HTMLButtonElement.checkValidity documentation> 
diff --git a/src/JSDOM/Generated/HTMLCanvasElement.hs b/src/JSDOM/Generated/HTMLCanvasElement.hs
--- a/src/JSDOM/Generated/HTMLCanvasElement.hs
+++ b/src/JSDOM/Generated/HTMLCanvasElement.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
diff --git a/src/JSDOM/Generated/HTMLCollection.hs b/src/JSDOM/Generated/HTMLCollection.hs
--- a/src/JSDOM/Generated/HTMLCollection.hs
+++ b/src/JSDOM/Generated/HTMLCollection.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.item Mozilla HTMLCollection.item documentation> 
diff --git a/src/JSDOM/Generated/HTMLDListElement.hs b/src/JSDOM/Generated/HTMLDListElement.hs
--- a/src/JSDOM/Generated/HTMLDListElement.hs
+++ b/src/JSDOM/Generated/HTMLDListElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDListElement.compact Mozilla HTMLDListElement.compact documentation> 
diff --git a/src/JSDOM/Generated/HTMLDataElement.hs b/src/JSDOM/Generated/HTMLDataElement.hs
--- a/src/JSDOM/Generated/HTMLDataElement.hs
+++ b/src/JSDOM/Generated/HTMLDataElement.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataElement.value Mozilla HTMLDataElement.value documentation> 
diff --git a/src/JSDOM/Generated/HTMLDataListElement.hs b/src/JSDOM/Generated/HTMLDataListElement.hs
--- a/src/JSDOM/Generated/HTMLDataListElement.hs
+++ b/src/JSDOM/Generated/HTMLDataListElement.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataListElement.options Mozilla HTMLDataListElement.options documentation> 
diff --git a/src/JSDOM/Generated/HTMLDetailsElement.hs b/src/JSDOM/Generated/HTMLDetailsElement.hs
--- a/src/JSDOM/Generated/HTMLDetailsElement.hs
+++ b/src/JSDOM/Generated/HTMLDetailsElement.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDetailsElement.open Mozilla HTMLDetailsElement.open documentation> 
diff --git a/src/JSDOM/Generated/HTMLDirectoryElement.hs b/src/JSDOM/Generated/HTMLDirectoryElement.hs
--- a/src/JSDOM/Generated/HTMLDirectoryElement.hs
+++ b/src/JSDOM/Generated/HTMLDirectoryElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDirectoryElement.compact Mozilla HTMLDirectoryElement.compact documentation> 
diff --git a/src/JSDOM/Generated/HTMLDivElement.hs b/src/JSDOM/Generated/HTMLDivElement.hs
--- a/src/JSDOM/Generated/HTMLDivElement.hs
+++ b/src/JSDOM/Generated/HTMLDivElement.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDivElement.align Mozilla HTMLDivElement.align documentation> 
diff --git a/src/JSDOM/Generated/HTMLDocument.hs b/src/JSDOM/Generated/HTMLDocument.hs
--- a/src/JSDOM/Generated/HTMLDocument.hs
+++ b/src/JSDOM/Generated/HTMLDocument.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.open Mozilla HTMLDocument.open documentation> 
diff --git a/src/JSDOM/Generated/HTMLElement.hs b/src/JSDOM/Generated/HTMLElement.hs
--- a/src/JSDOM/Generated/HTMLElement.hs
+++ b/src/JSDOM/Generated/HTMLElement.hs
@@ -26,7 +26,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement Mozilla HTMLElement documentation> 
diff --git a/src/JSDOM/Generated/HTMLEmbedElement.hs b/src/JSDOM/Generated/HTMLEmbedElement.hs
--- a/src/JSDOM/Generated/HTMLEmbedElement.hs
+++ b/src/JSDOM/Generated/HTMLEmbedElement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.getSVGDocument Mozilla HTMLEmbedElement.getSVGDocument documentation> 
diff --git a/src/JSDOM/Generated/HTMLFieldSetElement.hs b/src/JSDOM/Generated/HTMLFieldSetElement.hs
--- a/src/JSDOM/Generated/HTMLFieldSetElement.hs
+++ b/src/JSDOM/Generated/HTMLFieldSetElement.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.checkValidity Mozilla HTMLFieldSetElement.checkValidity documentation> 
diff --git a/src/JSDOM/Generated/HTMLFontElement.hs b/src/JSDOM/Generated/HTMLFontElement.hs
--- a/src/JSDOM/Generated/HTMLFontElement.hs
+++ b/src/JSDOM/Generated/HTMLFontElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.color Mozilla HTMLFontElement.color documentation> 
diff --git a/src/JSDOM/Generated/HTMLFormControlsCollection.hs b/src/JSDOM/Generated/HTMLFormControlsCollection.hs
--- a/src/JSDOM/Generated/HTMLFormControlsCollection.hs
+++ b/src/JSDOM/Generated/HTMLFormControlsCollection.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.get Mozilla HTMLFormControlsCollection.get documentation> 
diff --git a/src/JSDOM/Generated/HTMLFormElement.hs b/src/JSDOM/Generated/HTMLFormElement.hs
--- a/src/JSDOM/Generated/HTMLFormElement.hs
+++ b/src/JSDOM/Generated/HTMLFormElement.hs
@@ -23,7 +23,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
diff --git a/src/JSDOM/Generated/HTMLFrameElement.hs b/src/JSDOM/Generated/HTMLFrameElement.hs
--- a/src/JSDOM/Generated/HTMLFrameElement.hs
+++ b/src/JSDOM/Generated/HTMLFrameElement.hs
@@ -22,7 +22,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.getSVGDocument Mozilla HTMLFrameElement.getSVGDocument documentation> 
@@ -157,7 +157,8 @@
 getLocation ::
             (MonadDOM m, FromJSString result) =>
               HTMLFrameElement -> m (Maybe result)
-getLocation self = liftDOM ((self ^. js "location") >>= fromJSVal)
+getLocation self
+  = liftDOM ((self ^. js "location") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.location Mozilla HTMLFrameElement.location documentation> 
 getLocationUnsafe ::
@@ -165,7 +166,7 @@
                     HTMLFrameElement -> m result
 getLocationUnsafe self
   = liftDOM
-      (((self ^. js "location") >>= fromJSVal) >>=
+      (((self ^. js "location") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.location Mozilla HTMLFrameElement.location documentation> 
diff --git a/src/JSDOM/Generated/HTMLFrameSetElement.hs b/src/JSDOM/Generated/HTMLFrameSetElement.hs
--- a/src/JSDOM/Generated/HTMLFrameSetElement.hs
+++ b/src/JSDOM/Generated/HTMLFrameSetElement.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.cols Mozilla HTMLFrameSetElement.cols documentation> 
@@ -46,15 +46,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
@@ -66,7 +66,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/JSDOM/Generated/HTMLHRElement.hs b/src/JSDOM/Generated/HTMLHRElement.hs
--- a/src/JSDOM/Generated/HTMLHRElement.hs
+++ b/src/JSDOM/Generated/HTMLHRElement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.align Mozilla HTMLHRElement.align documentation> 
diff --git a/src/JSDOM/Generated/HTMLHeadElement.hs b/src/JSDOM/Generated/HTMLHeadElement.hs
--- a/src/JSDOM/Generated/HTMLHeadElement.hs
+++ b/src/JSDOM/Generated/HTMLHeadElement.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadElement.profile Mozilla HTMLHeadElement.profile documentation> 
diff --git a/src/JSDOM/Generated/HTMLHeadingElement.hs b/src/JSDOM/Generated/HTMLHeadingElement.hs
--- a/src/JSDOM/Generated/HTMLHeadingElement.hs
+++ b/src/JSDOM/Generated/HTMLHeadingElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadingElement.align Mozilla HTMLHeadingElement.align documentation> 
diff --git a/src/JSDOM/Generated/HTMLHtmlElement.hs b/src/JSDOM/Generated/HTMLHtmlElement.hs
--- a/src/JSDOM/Generated/HTMLHtmlElement.hs
+++ b/src/JSDOM/Generated/HTMLHtmlElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement.version Mozilla HTMLHtmlElement.version documentation> 
diff --git a/src/JSDOM/Generated/HTMLHyperlinkElementUtils.hs b/src/JSDOM/Generated/HTMLHyperlinkElementUtils.hs
--- a/src/JSDOM/Generated/HTMLHyperlinkElementUtils.hs
+++ b/src/JSDOM/Generated/HTMLHyperlinkElementUtils.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.href Mozilla HTMLHyperlinkElementUtils.href documentation> 
diff --git a/src/JSDOM/Generated/HTMLIFrameElement.hs b/src/JSDOM/Generated/HTMLIFrameElement.hs
--- a/src/JSDOM/Generated/HTMLIFrameElement.hs
+++ b/src/JSDOM/Generated/HTMLIFrameElement.hs
@@ -22,7 +22,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.getSVGDocument Mozilla HTMLIFrameElement.getSVGDocument documentation> 
diff --git a/src/JSDOM/Generated/HTMLImageElement.hs b/src/JSDOM/Generated/HTMLImageElement.hs
--- a/src/JSDOM/Generated/HTMLImageElement.hs
+++ b/src/JSDOM/Generated/HTMLImageElement.hs
@@ -24,7 +24,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.name Mozilla HTMLImageElement.name documentation> 
@@ -81,7 +81,7 @@
                (MonadDOM m, FromJSString result) =>
                  HTMLImageElement -> m (Maybe result)
 getCrossOrigin self
-  = liftDOM ((self ^. js "crossOrigin") >>= fromJSVal)
+  = liftDOM ((self ^. js "crossOrigin") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.crossOrigin Mozilla HTMLImageElement.crossOrigin documentation> 
 getCrossOriginUnsafe ::
@@ -89,7 +89,7 @@
                        HTMLImageElement -> m result
 getCrossOriginUnsafe self
   = liftDOM
-      (((self ^. js "crossOrigin") >>= fromJSVal) >>=
+      (((self ^. js "crossOrigin") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.crossOrigin Mozilla HTMLImageElement.crossOrigin documentation> 
diff --git a/src/JSDOM/Generated/HTMLInputElement.hs b/src/JSDOM/Generated/HTMLInputElement.hs
--- a/src/JSDOM/Generated/HTMLInputElement.hs
+++ b/src/JSDOM/Generated/HTMLInputElement.hs
@@ -40,7 +40,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.stepUp Mozilla HTMLInputElement.stepUp documentation> 
diff --git a/src/JSDOM/Generated/HTMLKeygenElement.hs b/src/JSDOM/Generated/HTMLKeygenElement.hs
--- a/src/JSDOM/Generated/HTMLKeygenElement.hs
+++ b/src/JSDOM/Generated/HTMLKeygenElement.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.checkValidity Mozilla HTMLKeygenElement.checkValidity documentation> 
diff --git a/src/JSDOM/Generated/HTMLLIElement.hs b/src/JSDOM/Generated/HTMLLIElement.hs
--- a/src/JSDOM/Generated/HTMLLIElement.hs
+++ b/src/JSDOM/Generated/HTMLLIElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement.type Mozilla HTMLLIElement.type documentation> 
diff --git a/src/JSDOM/Generated/HTMLLabelElement.hs b/src/JSDOM/Generated/HTMLLabelElement.hs
--- a/src/JSDOM/Generated/HTMLLabelElement.hs
+++ b/src/JSDOM/Generated/HTMLLabelElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.form Mozilla HTMLLabelElement.form documentation> 
diff --git a/src/JSDOM/Generated/HTMLLegendElement.hs b/src/JSDOM/Generated/HTMLLegendElement.hs
--- a/src/JSDOM/Generated/HTMLLegendElement.hs
+++ b/src/JSDOM/Generated/HTMLLegendElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement.form Mozilla HTMLLegendElement.form documentation> 
diff --git a/src/JSDOM/Generated/HTMLLinkElement.hs b/src/JSDOM/Generated/HTMLLinkElement.hs
--- a/src/JSDOM/Generated/HTMLLinkElement.hs
+++ b/src/JSDOM/Generated/HTMLLinkElement.hs
@@ -22,7 +22,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.disabled Mozilla HTMLLinkElement.disabled documentation> 
@@ -146,7 +146,7 @@
                (MonadDOM m, FromJSString result) =>
                  HTMLLinkElement -> m (Maybe result)
 getCrossOrigin self
-  = liftDOM ((self ^. js "crossOrigin") >>= fromJSVal)
+  = liftDOM ((self ^. js "crossOrigin") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.crossOrigin Mozilla HTMLLinkElement.crossOrigin documentation> 
 getCrossOriginUnsafe ::
@@ -154,7 +154,7 @@
                        HTMLLinkElement -> m result
 getCrossOriginUnsafe self
   = liftDOM
-      (((self ^. js "crossOrigin") >>= fromJSVal) >>=
+      (((self ^. js "crossOrigin") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.crossOrigin Mozilla HTMLLinkElement.crossOrigin documentation> 
diff --git a/src/JSDOM/Generated/HTMLMapElement.hs b/src/JSDOM/Generated/HTMLMapElement.hs
--- a/src/JSDOM/Generated/HTMLMapElement.hs
+++ b/src/JSDOM/Generated/HTMLMapElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement.areas Mozilla HTMLMapElement.areas documentation> 
diff --git a/src/JSDOM/Generated/HTMLMarqueeElement.hs b/src/JSDOM/Generated/HTMLMarqueeElement.hs
--- a/src/JSDOM/Generated/HTMLMarqueeElement.hs
+++ b/src/JSDOM/Generated/HTMLMarqueeElement.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.start Mozilla HTMLMarqueeElement.start documentation> 
diff --git a/src/JSDOM/Generated/HTMLMediaElement.hs b/src/JSDOM/Generated/HTMLMediaElement.hs
--- a/src/JSDOM/Generated/HTMLMediaElement.hs
+++ b/src/JSDOM/Generated/HTMLMediaElement.hs
@@ -44,7 +44,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.load Mozilla HTMLMediaElement.load documentation> 
@@ -261,7 +261,8 @@
                  self -> m (Maybe result)
 getCrossOrigin self
   = liftDOM
-      (((toHTMLMediaElement self) ^. js "crossOrigin") >>= fromJSVal)
+      (((toHTMLMediaElement self) ^. js "crossOrigin") >>=
+         fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.crossOrigin Mozilla HTMLMediaElement.crossOrigin documentation> 
 getCrossOriginUnsafe ::
@@ -270,7 +271,8 @@
                        self -> m result
 getCrossOriginUnsafe self
   = liftDOM
-      ((((toHTMLMediaElement self) ^. js "crossOrigin") >>= fromJSVal)
+      ((((toHTMLMediaElement self) ^. js "crossOrigin") >>=
+          fromMaybeJSString)
          >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.crossOrigin Mozilla HTMLMediaElement.crossOrigin documentation> 
diff --git a/src/JSDOM/Generated/HTMLMenuElement.hs b/src/JSDOM/Generated/HTMLMenuElement.hs
--- a/src/JSDOM/Generated/HTMLMenuElement.hs
+++ b/src/JSDOM/Generated/HTMLMenuElement.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMenuElement.compact Mozilla HTMLMenuElement.compact documentation> 
diff --git a/src/JSDOM/Generated/HTMLMetaElement.hs b/src/JSDOM/Generated/HTMLMetaElement.hs
--- a/src/JSDOM/Generated/HTMLMetaElement.hs
+++ b/src/JSDOM/Generated/HTMLMetaElement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.content Mozilla HTMLMetaElement.content documentation> 
diff --git a/src/JSDOM/Generated/HTMLMeterElement.hs b/src/JSDOM/Generated/HTMLMeterElement.hs
--- a/src/JSDOM/Generated/HTMLMeterElement.hs
+++ b/src/JSDOM/Generated/HTMLMeterElement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.value Mozilla HTMLMeterElement.value documentation> 
diff --git a/src/JSDOM/Generated/HTMLModElement.hs b/src/JSDOM/Generated/HTMLModElement.hs
--- a/src/JSDOM/Generated/HTMLModElement.hs
+++ b/src/JSDOM/Generated/HTMLModElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement.cite Mozilla HTMLModElement.cite documentation> 
diff --git a/src/JSDOM/Generated/HTMLOListElement.hs b/src/JSDOM/Generated/HTMLOListElement.hs
--- a/src/JSDOM/Generated/HTMLOListElement.hs
+++ b/src/JSDOM/Generated/HTMLOListElement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.compact Mozilla HTMLOListElement.compact documentation> 
diff --git a/src/JSDOM/Generated/HTMLObjectElement.hs b/src/JSDOM/Generated/HTMLObjectElement.hs
--- a/src/JSDOM/Generated/HTMLObjectElement.hs
+++ b/src/JSDOM/Generated/HTMLObjectElement.hs
@@ -25,7 +25,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.checkValidity Mozilla HTMLObjectElement.checkValidity documentation> 
diff --git a/src/JSDOM/Generated/HTMLOptGroupElement.hs b/src/JSDOM/Generated/HTMLOptGroupElement.hs
--- a/src/JSDOM/Generated/HTMLOptGroupElement.hs
+++ b/src/JSDOM/Generated/HTMLOptGroupElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement.disabled Mozilla HTMLOptGroupElement.disabled documentation> 
diff --git a/src/JSDOM/Generated/HTMLOptionElement.hs b/src/JSDOM/Generated/HTMLOptionElement.hs
--- a/src/JSDOM/Generated/HTMLOptionElement.hs
+++ b/src/JSDOM/Generated/HTMLOptionElement.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.disabled Mozilla HTMLOptionElement.disabled documentation> 
diff --git a/src/JSDOM/Generated/HTMLOptionsCollection.hs b/src/JSDOM/Generated/HTMLOptionsCollection.hs
--- a/src/JSDOM/Generated/HTMLOptionsCollection.hs
+++ b/src/JSDOM/Generated/HTMLOptionsCollection.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.add Mozilla HTMLOptionsCollection.add documentation> 
diff --git a/src/JSDOM/Generated/HTMLOutputElement.hs b/src/JSDOM/Generated/HTMLOutputElement.hs
--- a/src/JSDOM/Generated/HTMLOutputElement.hs
+++ b/src/JSDOM/Generated/HTMLOutputElement.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.checkValidity Mozilla HTMLOutputElement.checkValidity documentation> 
diff --git a/src/JSDOM/Generated/HTMLParagraphElement.hs b/src/JSDOM/Generated/HTMLParagraphElement.hs
--- a/src/JSDOM/Generated/HTMLParagraphElement.hs
+++ b/src/JSDOM/Generated/HTMLParagraphElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParagraphElement.align Mozilla HTMLParagraphElement.align documentation> 
diff --git a/src/JSDOM/Generated/HTMLParamElement.hs b/src/JSDOM/Generated/HTMLParamElement.hs
--- a/src/JSDOM/Generated/HTMLParamElement.hs
+++ b/src/JSDOM/Generated/HTMLParamElement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.name Mozilla HTMLParamElement.name documentation> 
diff --git a/src/JSDOM/Generated/HTMLPreElement.hs b/src/JSDOM/Generated/HTMLPreElement.hs
--- a/src/JSDOM/Generated/HTMLPreElement.hs
+++ b/src/JSDOM/Generated/HTMLPreElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement.width Mozilla HTMLPreElement.width documentation> 
diff --git a/src/JSDOM/Generated/HTMLProgressElement.hs b/src/JSDOM/Generated/HTMLProgressElement.hs
--- a/src/JSDOM/Generated/HTMLProgressElement.hs
+++ b/src/JSDOM/Generated/HTMLProgressElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.value Mozilla HTMLProgressElement.value documentation> 
diff --git a/src/JSDOM/Generated/HTMLQuoteElement.hs b/src/JSDOM/Generated/HTMLQuoteElement.hs
--- a/src/JSDOM/Generated/HTMLQuoteElement.hs
+++ b/src/JSDOM/Generated/HTMLQuoteElement.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLQuoteElement.cite Mozilla HTMLQuoteElement.cite documentation> 
diff --git a/src/JSDOM/Generated/HTMLScriptElement.hs b/src/JSDOM/Generated/HTMLScriptElement.hs
--- a/src/JSDOM/Generated/HTMLScriptElement.hs
+++ b/src/JSDOM/Generated/HTMLScriptElement.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.text Mozilla HTMLScriptElement.text documentation> 
@@ -115,7 +115,7 @@
                (MonadDOM m, FromJSString result) =>
                  HTMLScriptElement -> m (Maybe result)
 getCrossOrigin self
-  = liftDOM ((self ^. js "crossOrigin") >>= fromJSVal)
+  = liftDOM ((self ^. js "crossOrigin") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.crossOrigin Mozilla HTMLScriptElement.crossOrigin documentation> 
 getCrossOriginUnsafe ::
@@ -123,7 +123,7 @@
                        HTMLScriptElement -> m result
 getCrossOriginUnsafe self
   = liftDOM
-      (((self ^. js "crossOrigin") >>= fromJSVal) >>=
+      (((self ^. js "crossOrigin") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.crossOrigin Mozilla HTMLScriptElement.crossOrigin documentation> 
diff --git a/src/JSDOM/Generated/HTMLSelectElement.hs b/src/JSDOM/Generated/HTMLSelectElement.hs
--- a/src/JSDOM/Generated/HTMLSelectElement.hs
+++ b/src/JSDOM/Generated/HTMLSelectElement.hs
@@ -26,7 +26,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.item Mozilla HTMLSelectElement.item documentation> 
diff --git a/src/JSDOM/Generated/HTMLSlotElement.hs b/src/JSDOM/Generated/HTMLSlotElement.hs
--- a/src/JSDOM/Generated/HTMLSlotElement.hs
+++ b/src/JSDOM/Generated/HTMLSlotElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement.assignedNodes Mozilla HTMLSlotElement.assignedNodes documentation> 
diff --git a/src/JSDOM/Generated/HTMLSourceElement.hs b/src/JSDOM/Generated/HTMLSourceElement.hs
--- a/src/JSDOM/Generated/HTMLSourceElement.hs
+++ b/src/JSDOM/Generated/HTMLSourceElement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.src Mozilla HTMLSourceElement.src documentation> 
diff --git a/src/JSDOM/Generated/HTMLStyleElement.hs b/src/JSDOM/Generated/HTMLStyleElement.hs
--- a/src/JSDOM/Generated/HTMLStyleElement.hs
+++ b/src/JSDOM/Generated/HTMLStyleElement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.disabled Mozilla HTMLStyleElement.disabled documentation> 
diff --git a/src/JSDOM/Generated/HTMLTableCaptionElement.hs b/src/JSDOM/Generated/HTMLTableCaptionElement.hs
--- a/src/JSDOM/Generated/HTMLTableCaptionElement.hs
+++ b/src/JSDOM/Generated/HTMLTableCaptionElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCaptionElement.align Mozilla HTMLTableCaptionElement.align documentation> 
diff --git a/src/JSDOM/Generated/HTMLTableCellElement.hs b/src/JSDOM/Generated/HTMLTableCellElement.hs
--- a/src/JSDOM/Generated/HTMLTableCellElement.hs
+++ b/src/JSDOM/Generated/HTMLTableCellElement.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.cellIndex Mozilla HTMLTableCellElement.cellIndex documentation> 
diff --git a/src/JSDOM/Generated/HTMLTableColElement.hs b/src/JSDOM/Generated/HTMLTableColElement.hs
--- a/src/JSDOM/Generated/HTMLTableColElement.hs
+++ b/src/JSDOM/Generated/HTMLTableColElement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.align Mozilla HTMLTableColElement.align documentation> 
diff --git a/src/JSDOM/Generated/HTMLTableElement.hs b/src/JSDOM/Generated/HTMLTableElement.hs
--- a/src/JSDOM/Generated/HTMLTableElement.hs
+++ b/src/JSDOM/Generated/HTMLTableElement.hs
@@ -25,7 +25,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTHead Mozilla HTMLTableElement.createTHead documentation> 
diff --git a/src/JSDOM/Generated/HTMLTableRowElement.hs b/src/JSDOM/Generated/HTMLTableRowElement.hs
--- a/src/JSDOM/Generated/HTMLTableRowElement.hs
+++ b/src/JSDOM/Generated/HTMLTableRowElement.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.insertCell Mozilla HTMLTableRowElement.insertCell documentation> 
diff --git a/src/JSDOM/Generated/HTMLTableSectionElement.hs b/src/JSDOM/Generated/HTMLTableSectionElement.hs
--- a/src/JSDOM/Generated/HTMLTableSectionElement.hs
+++ b/src/JSDOM/Generated/HTMLTableSectionElement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.insertRow Mozilla HTMLTableSectionElement.insertRow documentation> 
diff --git a/src/JSDOM/Generated/HTMLTemplateElement.hs b/src/JSDOM/Generated/HTMLTemplateElement.hs
--- a/src/JSDOM/Generated/HTMLTemplateElement.hs
+++ b/src/JSDOM/Generated/HTMLTemplateElement.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement.content Mozilla HTMLTemplateElement.content documentation> 
diff --git a/src/JSDOM/Generated/HTMLTextAreaElement.hs b/src/JSDOM/Generated/HTMLTextAreaElement.hs
--- a/src/JSDOM/Generated/HTMLTextAreaElement.hs
+++ b/src/JSDOM/Generated/HTMLTextAreaElement.hs
@@ -28,7 +28,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.checkValidity Mozilla HTMLTextAreaElement.checkValidity documentation> 
diff --git a/src/JSDOM/Generated/HTMLTimeElement.hs b/src/JSDOM/Generated/HTMLTimeElement.hs
--- a/src/JSDOM/Generated/HTMLTimeElement.hs
+++ b/src/JSDOM/Generated/HTMLTimeElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTimeElement.dateTime Mozilla HTMLTimeElement.dateTime documentation> 
diff --git a/src/JSDOM/Generated/HTMLTitleElement.hs b/src/JSDOM/Generated/HTMLTitleElement.hs
--- a/src/JSDOM/Generated/HTMLTitleElement.hs
+++ b/src/JSDOM/Generated/HTMLTitleElement.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTitleElement.text Mozilla HTMLTitleElement.text documentation> 
diff --git a/src/JSDOM/Generated/HTMLTrackElement.hs b/src/JSDOM/Generated/HTMLTrackElement.hs
--- a/src/JSDOM/Generated/HTMLTrackElement.hs
+++ b/src/JSDOM/Generated/HTMLTrackElement.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern NONE = 0
 pattern LOADING = 1
diff --git a/src/JSDOM/Generated/HTMLUListElement.hs b/src/JSDOM/Generated/HTMLUListElement.hs
--- a/src/JSDOM/Generated/HTMLUListElement.hs
+++ b/src/JSDOM/Generated/HTMLUListElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement.compact Mozilla HTMLUListElement.compact documentation> 
diff --git a/src/JSDOM/Generated/HTMLVideoElement.hs b/src/JSDOM/Generated/HTMLVideoElement.hs
--- a/src/JSDOM/Generated/HTMLVideoElement.hs
+++ b/src/JSDOM/Generated/HTMLVideoElement.hs
@@ -26,7 +26,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitEnterFullscreen Mozilla HTMLVideoElement.webkitEnterFullscreen documentation> 
diff --git a/src/JSDOM/Generated/HashChangeEvent.hs b/src/JSDOM/Generated/HashChangeEvent.hs
--- a/src/JSDOM/Generated/HashChangeEvent.hs
+++ b/src/JSDOM/Generated/HashChangeEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent Mozilla HashChangeEvent documentation> 
diff --git a/src/JSDOM/Generated/Headers.hs b/src/JSDOM/Generated/Headers.hs
--- a/src/JSDOM/Generated/Headers.hs
+++ b/src/JSDOM/Generated/Headers.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.append Mozilla Headers.append documentation> 
@@ -38,7 +38,8 @@
     (MonadDOM m, ToJSString name, FromJSString result) =>
       Headers -> name -> m (Maybe result)
 get self name
-  = liftDOM ((self ^. jsf "get" [toJSVal name]) >>= fromJSVal)
+  = liftDOM
+      ((self ^. jsf "get" [toJSVal name]) >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.get Mozilla Headers.get documentation> 
 get_ :: (MonadDOM m, ToJSString name) => Headers -> name -> m ()
@@ -50,7 +51,7 @@
             Headers -> name -> m result
 getUnsafe self name
   = liftDOM
-      (((self ^. jsf "get" [toJSVal name]) >>= fromJSVal) >>=
+      (((self ^. jsf "get" [toJSVal name]) >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.get Mozilla Headers.get documentation> 
diff --git a/src/JSDOM/Generated/History.hs b/src/JSDOM/Generated/History.hs
--- a/src/JSDOM/Generated/History.hs
+++ b/src/JSDOM/Generated/History.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/History.back Mozilla History.back documentation> 
diff --git a/src/JSDOM/Generated/IDBCursor.hs b/src/JSDOM/Generated/IDBCursor.hs
--- a/src/JSDOM/Generated/IDBCursor.hs
+++ b/src/JSDOM/Generated/IDBCursor.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.update Mozilla IDBCursor.update documentation> 
diff --git a/src/JSDOM/Generated/IDBCursorWithValue.hs b/src/JSDOM/Generated/IDBCursorWithValue.hs
--- a/src/JSDOM/Generated/IDBCursorWithValue.hs
+++ b/src/JSDOM/Generated/IDBCursorWithValue.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursorWithValue.value Mozilla IDBCursorWithValue.value documentation> 
diff --git a/src/JSDOM/Generated/IDBDatabase.hs b/src/JSDOM/Generated/IDBDatabase.hs
--- a/src/JSDOM/Generated/IDBDatabase.hs
+++ b/src/JSDOM/Generated/IDBDatabase.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.createObjectStore Mozilla IDBDatabase.createObjectStore documentation> 
@@ -94,7 +94,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/JSDOM/Generated/IDBFactory.hs b/src/JSDOM/Generated/IDBFactory.hs
--- a/src/JSDOM/Generated/IDBFactory.hs
+++ b/src/JSDOM/Generated/IDBFactory.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.open Mozilla IDBFactory.open documentation> 
diff --git a/src/JSDOM/Generated/IDBIndex.hs b/src/JSDOM/Generated/IDBIndex.hs
--- a/src/JSDOM/Generated/IDBIndex.hs
+++ b/src/JSDOM/Generated/IDBIndex.hs
@@ -24,7 +24,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
diff --git a/src/JSDOM/Generated/IDBKeyRange.hs b/src/JSDOM/Generated/IDBKeyRange.hs
--- a/src/JSDOM/Generated/IDBKeyRange.hs
+++ b/src/JSDOM/Generated/IDBKeyRange.hs
@@ -18,62 +18,63 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.only Mozilla IDBKeyRange.only documentation> 
-only ::
-     (MonadDOM m, ToJSVal value) =>
-       IDBKeyRange -> value -> m IDBKeyRange
-only self value
+only :: (MonadDOM m, ToJSVal value) => value -> m IDBKeyRange
+only value
   = liftDOM
-      ((self ^. jsf "only" [toJSVal value]) >>= fromJSValUnchecked)
+      (((jsg "IDBKeyRange") ^. jsf "only" [toJSVal value]) >>=
+         fromJSValUnchecked)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.only Mozilla IDBKeyRange.only documentation> 
-only_ ::
-      (MonadDOM m, ToJSVal value) => IDBKeyRange -> value -> m ()
-only_ self value
-  = liftDOM (void (self ^. jsf "only" [toJSVal value]))
+only_ :: (MonadDOM m, ToJSVal value) => value -> m ()
+only_ value
+  = liftDOM
+      (void ((jsg "IDBKeyRange") ^. jsf "only" [toJSVal value]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerBound Mozilla IDBKeyRange.lowerBound documentation> 
 lowerBound ::
-           (MonadDOM m, ToJSVal lower) =>
-             IDBKeyRange -> lower -> Bool -> m IDBKeyRange
-lowerBound self lower open
+           (MonadDOM m, ToJSVal lower) => lower -> Bool -> m IDBKeyRange
+lowerBound lower open
   = liftDOM
-      ((self ^. jsf "lowerBound" [toJSVal lower, toJSVal open]) >>=
-         fromJSValUnchecked)
+      (((jsg "IDBKeyRange") ^. jsf "lowerBound"
+          [toJSVal lower, toJSVal open])
+         >>= fromJSValUnchecked)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerBound Mozilla IDBKeyRange.lowerBound documentation> 
-lowerBound_ ::
-            (MonadDOM m, ToJSVal lower) => IDBKeyRange -> lower -> Bool -> m ()
-lowerBound_ self lower open
+lowerBound_ :: (MonadDOM m, ToJSVal lower) => lower -> Bool -> m ()
+lowerBound_ lower open
   = liftDOM
-      (void (self ^. jsf "lowerBound" [toJSVal lower, toJSVal open]))
+      (void
+         ((jsg "IDBKeyRange") ^. jsf "lowerBound"
+            [toJSVal lower, toJSVal open]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperBound Mozilla IDBKeyRange.upperBound documentation> 
 upperBound ::
-           (MonadDOM m, ToJSVal upper) =>
-             IDBKeyRange -> upper -> Bool -> m IDBKeyRange
-upperBound self upper open
+           (MonadDOM m, ToJSVal upper) => upper -> Bool -> m IDBKeyRange
+upperBound upper open
   = liftDOM
-      ((self ^. jsf "upperBound" [toJSVal upper, toJSVal open]) >>=
-         fromJSValUnchecked)
+      (((jsg "IDBKeyRange") ^. jsf "upperBound"
+          [toJSVal upper, toJSVal open])
+         >>= fromJSValUnchecked)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperBound Mozilla IDBKeyRange.upperBound documentation> 
-upperBound_ ::
-            (MonadDOM m, ToJSVal upper) => IDBKeyRange -> upper -> Bool -> m ()
-upperBound_ self upper open
+upperBound_ :: (MonadDOM m, ToJSVal upper) => upper -> Bool -> m ()
+upperBound_ upper open
   = liftDOM
-      (void (self ^. jsf "upperBound" [toJSVal upper, toJSVal open]))
+      (void
+         ((jsg "IDBKeyRange") ^. jsf "upperBound"
+            [toJSVal upper, toJSVal open]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.bound Mozilla IDBKeyRange.bound documentation> 
 bound ::
       (MonadDOM 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
   = liftDOM
-      ((self ^. jsf "bound"
+      (((jsg "IDBKeyRange") ^. jsf "bound"
           [toJSVal lower, toJSVal upper, toJSVal lowerOpen,
            toJSVal upperOpen])
          >>= fromJSValUnchecked)
@@ -81,11 +82,11 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.bound Mozilla IDBKeyRange.bound documentation> 
 bound_ ::
        (MonadDOM 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
   = liftDOM
       (void
-         (self ^. jsf "bound"
+         ((jsg "IDBKeyRange") ^. jsf "bound"
             [toJSVal lower, toJSVal upper, toJSVal lowerOpen,
              toJSVal upperOpen]))
 
diff --git a/src/JSDOM/Generated/IDBObjectStore.hs b/src/JSDOM/Generated/IDBObjectStore.hs
--- a/src/JSDOM/Generated/IDBObjectStore.hs
+++ b/src/JSDOM/Generated/IDBObjectStore.hs
@@ -26,7 +26,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.put Mozilla IDBObjectStore.put documentation> 
diff --git a/src/JSDOM/Generated/IDBOpenDBRequest.hs b/src/JSDOM/Generated/IDBOpenDBRequest.hs
--- a/src/JSDOM/Generated/IDBOpenDBRequest.hs
+++ b/src/JSDOM/Generated/IDBOpenDBRequest.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBOpenDBRequest.onblocked Mozilla IDBOpenDBRequest.onblocked documentation> 
diff --git a/src/JSDOM/Generated/IDBRequest.hs b/src/JSDOM/Generated/IDBRequest.hs
--- a/src/JSDOM/Generated/IDBRequest.hs
+++ b/src/JSDOM/Generated/IDBRequest.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.result Mozilla IDBRequest.result documentation> 
diff --git a/src/JSDOM/Generated/IDBTransaction.hs b/src/JSDOM/Generated/IDBTransaction.hs
--- a/src/JSDOM/Generated/IDBTransaction.hs
+++ b/src/JSDOM/Generated/IDBTransaction.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.objectStore Mozilla IDBTransaction.objectStore documentation> 
diff --git a/src/JSDOM/Generated/IDBVersionChangeEvent.hs b/src/JSDOM/Generated/IDBVersionChangeEvent.hs
--- a/src/JSDOM/Generated/IDBVersionChangeEvent.hs
+++ b/src/JSDOM/Generated/IDBVersionChangeEvent.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent Mozilla IDBVersionChangeEvent documentation> 
diff --git a/src/JSDOM/Generated/ImageData.hs b/src/JSDOM/Generated/ImageData.hs
--- a/src/JSDOM/Generated/ImageData.hs
+++ b/src/JSDOM/Generated/ImageData.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData Mozilla ImageData documentation> 
diff --git a/src/JSDOM/Generated/InputEvent.hs b/src/JSDOM/Generated/InputEvent.hs
--- a/src/JSDOM/Generated/InputEvent.hs
+++ b/src/JSDOM/Generated/InputEvent.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent Mozilla InputEvent documentation> 
@@ -51,7 +51,7 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.data Mozilla InputEvent.data documentation> 
 getData ::
         (MonadDOM m, FromJSString result) => InputEvent -> m (Maybe result)
-getData self = liftDOM ((self ^. js "data") >>= fromJSVal)
+getData self = liftDOM ((self ^. js "data") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.data Mozilla InputEvent.data documentation> 
 getDataUnsafe ::
@@ -59,7 +59,7 @@
                 InputEvent -> m result
 getDataUnsafe self
   = liftDOM
-      (((self ^. js "data") >>= fromJSVal) >>=
+      (((self ^. js "data") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.data Mozilla InputEvent.data documentation> 
diff --git a/src/JSDOM/Generated/InspectorFrontendHost.hs b/src/JSDOM/Generated/InspectorFrontendHost.hs
--- a/src/JSDOM/Generated/InspectorFrontendHost.hs
+++ b/src/JSDOM/Generated/InspectorFrontendHost.hs
@@ -28,7 +28,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.loaded Mozilla InspectorFrontendHost.loaded documentation> 
diff --git a/src/JSDOM/Generated/IntersectionObserver.hs b/src/JSDOM/Generated/IntersectionObserver.hs
--- a/src/JSDOM/Generated/IntersectionObserver.hs
+++ b/src/JSDOM/Generated/IntersectionObserver.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver Mozilla IntersectionObserver documentation> 
diff --git a/src/JSDOM/Generated/IntersectionObserverCallback.hs b/src/JSDOM/Generated/IntersectionObserverCallback.hs
--- a/src/JSDOM/Generated/IntersectionObserverCallback.hs
+++ b/src/JSDOM/Generated/IntersectionObserverCallback.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverCallback Mozilla IntersectionObserverCallback documentation> 
diff --git a/src/JSDOM/Generated/IntersectionObserverEntry.hs b/src/JSDOM/Generated/IntersectionObserverEntry.hs
--- a/src/JSDOM/Generated/IntersectionObserverEntry.hs
+++ b/src/JSDOM/Generated/IntersectionObserverEntry.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry Mozilla IntersectionObserverEntry documentation> 
diff --git a/src/JSDOM/Generated/KeyboardEvent.hs b/src/JSDOM/Generated/KeyboardEvent.hs
--- a/src/JSDOM/Generated/KeyboardEvent.hs
+++ b/src/JSDOM/Generated/KeyboardEvent.hs
@@ -23,7 +23,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent Mozilla KeyboardEvent documentation> 
diff --git a/src/JSDOM/Generated/KeyframeEffect.hs b/src/JSDOM/Generated/KeyframeEffect.hs
--- a/src/JSDOM/Generated/KeyframeEffect.hs
+++ b/src/JSDOM/Generated/KeyframeEffect.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyframeEffect Mozilla KeyframeEffect documentation> 
diff --git a/src/JSDOM/Generated/Location.hs b/src/JSDOM/Generated/Location.hs
--- a/src/JSDOM/Generated/Location.hs
+++ b/src/JSDOM/Generated/Location.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.assign Mozilla Location.assign documentation> 
diff --git a/src/JSDOM/Generated/MediaController.hs b/src/JSDOM/Generated/MediaController.hs
--- a/src/JSDOM/Generated/MediaController.hs
+++ b/src/JSDOM/Generated/MediaController.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController Mozilla MediaController documentation> 
diff --git a/src/JSDOM/Generated/MediaControlsHost.hs b/src/JSDOM/Generated/MediaControlsHost.hs
--- a/src/JSDOM/Generated/MediaControlsHost.hs
+++ b/src/JSDOM/Generated/MediaControlsHost.hs
@@ -30,7 +30,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.sortedTrackListForMenu Mozilla MediaControlsHost.sortedTrackListForMenu documentation> 
diff --git a/src/JSDOM/Generated/MediaDeviceInfo.hs b/src/JSDOM/Generated/MediaDeviceInfo.hs
--- a/src/JSDOM/Generated/MediaDeviceInfo.hs
+++ b/src/JSDOM/Generated/MediaDeviceInfo.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo Mozilla MediaDeviceInfo documentation> 
diff --git a/src/JSDOM/Generated/MediaDevices.hs b/src/JSDOM/Generated/MediaDevices.hs
--- a/src/JSDOM/Generated/MediaDevices.hs
+++ b/src/JSDOM/Generated/MediaDevices.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.enumerateDevices Mozilla MediaDevices.enumerateDevices documentation> 
diff --git a/src/JSDOM/Generated/MediaElementAudioSourceNode.hs b/src/JSDOM/Generated/MediaElementAudioSourceNode.hs
--- a/src/JSDOM/Generated/MediaElementAudioSourceNode.hs
+++ b/src/JSDOM/Generated/MediaElementAudioSourceNode.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaElementAudioSourceNode.mediaElement Mozilla MediaElementAudioSourceNode.mediaElement documentation> 
diff --git a/src/JSDOM/Generated/MediaEncryptedEvent.hs b/src/JSDOM/Generated/MediaEncryptedEvent.hs
--- a/src/JSDOM/Generated/MediaEncryptedEvent.hs
+++ b/src/JSDOM/Generated/MediaEncryptedEvent.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEvent Mozilla MediaEncryptedEvent documentation> 
diff --git a/src/JSDOM/Generated/MediaError.hs b/src/JSDOM/Generated/MediaError.hs
--- a/src/JSDOM/Generated/MediaError.hs
+++ b/src/JSDOM/Generated/MediaError.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern MEDIA_ERR_ABORTED = 1
 pattern MEDIA_ERR_NETWORK = 2
diff --git a/src/JSDOM/Generated/MediaKeyMessageEvent.hs b/src/JSDOM/Generated/MediaKeyMessageEvent.hs
--- a/src/JSDOM/Generated/MediaKeyMessageEvent.hs
+++ b/src/JSDOM/Generated/MediaKeyMessageEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent Mozilla WebKitMediaKeyMessageEvent documentation> 
diff --git a/src/JSDOM/Generated/MediaKeySession.hs b/src/JSDOM/Generated/MediaKeySession.hs
--- a/src/JSDOM/Generated/MediaKeySession.hs
+++ b/src/JSDOM/Generated/MediaKeySession.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.generateRequest Mozilla WebKitMediaKeySession.generateRequest documentation> 
@@ -95,4 +95,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/JSDOM/Generated/MediaKeyStatusMap.hs b/src/JSDOM/Generated/MediaKeyStatusMap.hs
--- a/src/JSDOM/Generated/MediaKeyStatusMap.hs
+++ b/src/JSDOM/Generated/MediaKeyStatusMap.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap.has Mozilla MediaKeyStatusMap.has documentation> 
diff --git a/src/JSDOM/Generated/MediaKeySystemAccess.hs b/src/JSDOM/Generated/MediaKeySystemAccess.hs
--- a/src/JSDOM/Generated/MediaKeySystemAccess.hs
+++ b/src/JSDOM/Generated/MediaKeySystemAccess.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess.getConfiguration Mozilla MediaKeySystemAccess.getConfiguration documentation> 
diff --git a/src/JSDOM/Generated/MediaKeys.hs b/src/JSDOM/Generated/MediaKeys.hs
--- a/src/JSDOM/Generated/MediaKeys.hs
+++ b/src/JSDOM/Generated/MediaKeys.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.createSession Mozilla WebKitMediaKeys.createSession documentation> 
diff --git a/src/JSDOM/Generated/MediaList.hs b/src/JSDOM/Generated/MediaList.hs
--- a/src/JSDOM/Generated/MediaList.hs
+++ b/src/JSDOM/Generated/MediaList.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
@@ -26,7 +26,8 @@
      (MonadDOM m, FromJSString result) =>
        MediaList -> Word -> m (Maybe result)
 item self index
-  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+  = liftDOM
+      ((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
 item_ :: (MonadDOM m) => MediaList -> Word -> m ()
@@ -39,7 +40,7 @@
              MediaList -> Word -> m result
 itemUnsafe self index
   = liftDOM
-      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+      (((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
diff --git a/src/JSDOM/Generated/MediaQueryList.hs b/src/JSDOM/Generated/MediaQueryList.hs
--- a/src/JSDOM/Generated/MediaQueryList.hs
+++ b/src/JSDOM/Generated/MediaQueryList.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList.addListener Mozilla MediaQueryList.addListener documentation> 
diff --git a/src/JSDOM/Generated/MediaQueryListListener.hs b/src/JSDOM/Generated/MediaQueryListListener.hs
--- a/src/JSDOM/Generated/MediaQueryListListener.hs
+++ b/src/JSDOM/Generated/MediaQueryListListener.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryListListener Mozilla MediaQueryListListener documentation> 
diff --git a/src/JSDOM/Generated/MediaRemoteControls.hs b/src/JSDOM/Generated/MediaRemoteControls.hs
--- a/src/JSDOM/Generated/MediaRemoteControls.hs
+++ b/src/JSDOM/Generated/MediaRemoteControls.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls Mozilla MediaRemoteControls documentation> 
diff --git a/src/JSDOM/Generated/MediaSession.hs b/src/JSDOM/Generated/MediaSession.hs
--- a/src/JSDOM/Generated/MediaSession.hs
+++ b/src/JSDOM/Generated/MediaSession.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession Mozilla MediaSession documentation> 
diff --git a/src/JSDOM/Generated/MediaSource.hs b/src/JSDOM/Generated/MediaSource.hs
--- a/src/JSDOM/Generated/MediaSource.hs
+++ b/src/JSDOM/Generated/MediaSource.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource Mozilla MediaSource documentation> 
@@ -59,16 +59,18 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.isTypeSupported Mozilla MediaSource.isTypeSupported documentation> 
 isTypeSupported ::
-                (MonadDOM m, ToJSString type') => MediaSource -> type' -> m Bool
-isTypeSupported self type'
+                (MonadDOM m, ToJSString type') => type' -> m Bool
+isTypeSupported type'
   = liftDOM
-      ((self ^. jsf "isTypeSupported" [toJSVal type']) >>= valToBool)
+      (((jsg "MediaSource") ^. jsf "isTypeSupported" [toJSVal type']) >>=
+         valToBool)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.isTypeSupported Mozilla MediaSource.isTypeSupported documentation> 
-isTypeSupported_ ::
-                 (MonadDOM m, ToJSString type') => MediaSource -> type' -> m ()
-isTypeSupported_ self type'
-  = liftDOM (void (self ^. jsf "isTypeSupported" [toJSVal type']))
+isTypeSupported_ :: (MonadDOM m, ToJSString type') => type' -> m ()
+isTypeSupported_ type'
+  = liftDOM
+      (void
+         ((jsg "MediaSource") ^. jsf "isTypeSupported" [toJSVal type']))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.setLiveSeekableRange Mozilla MediaSource.setLiveSeekableRange documentation> 
 setLiveSeekableRange ::
diff --git a/src/JSDOM/Generated/MediaStream.hs b/src/JSDOM/Generated/MediaStream.hs
--- a/src/JSDOM/Generated/MediaStream.hs
+++ b/src/JSDOM/Generated/MediaStream.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation> 
diff --git a/src/JSDOM/Generated/MediaStreamAudioDestinationNode.hs b/src/JSDOM/Generated/MediaStreamAudioDestinationNode.hs
--- a/src/JSDOM/Generated/MediaStreamAudioDestinationNode.hs
+++ b/src/JSDOM/Generated/MediaStreamAudioDestinationNode.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioDestinationNode.stream Mozilla MediaStreamAudioDestinationNode.stream documentation> 
diff --git a/src/JSDOM/Generated/MediaStreamAudioSourceNode.hs b/src/JSDOM/Generated/MediaStreamAudioSourceNode.hs
--- a/src/JSDOM/Generated/MediaStreamAudioSourceNode.hs
+++ b/src/JSDOM/Generated/MediaStreamAudioSourceNode.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioSourceNode.mediaStream Mozilla MediaStreamAudioSourceNode.mediaStream documentation> 
diff --git a/src/JSDOM/Generated/MediaStreamEvent.hs b/src/JSDOM/Generated/MediaStreamEvent.hs
--- a/src/JSDOM/Generated/MediaStreamEvent.hs
+++ b/src/JSDOM/Generated/MediaStreamEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent Mozilla MediaStreamEvent documentation> 
diff --git a/src/JSDOM/Generated/MediaStreamTrack.hs b/src/JSDOM/Generated/MediaStreamTrack.hs
--- a/src/JSDOM/Generated/MediaStreamTrack.hs
+++ b/src/JSDOM/Generated/MediaStreamTrack.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.clone Mozilla MediaStreamTrack.clone documentation> 
diff --git a/src/JSDOM/Generated/MediaStreamTrackEvent.hs b/src/JSDOM/Generated/MediaStreamTrackEvent.hs
--- a/src/JSDOM/Generated/MediaStreamTrackEvent.hs
+++ b/src/JSDOM/Generated/MediaStreamTrackEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackEvent Mozilla MediaStreamTrackEvent documentation> 
diff --git a/src/JSDOM/Generated/MessageChannel.hs b/src/JSDOM/Generated/MessageChannel.hs
--- a/src/JSDOM/Generated/MessageChannel.hs
+++ b/src/JSDOM/Generated/MessageChannel.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel Mozilla MessageChannel documentation> 
diff --git a/src/JSDOM/Generated/MessageEvent.hs b/src/JSDOM/Generated/MessageEvent.hs
--- a/src/JSDOM/Generated/MessageEvent.hs
+++ b/src/JSDOM/Generated/MessageEvent.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent Mozilla MessageEvent documentation> 
diff --git a/src/JSDOM/Generated/MessagePort.hs b/src/JSDOM/Generated/MessagePort.hs
--- a/src/JSDOM/Generated/MessagePort.hs
+++ b/src/JSDOM/Generated/MessagePort.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.postMessage Mozilla MessagePort.postMessage documentation> 
@@ -40,4 +40,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/JSDOM/Generated/MimeType.hs b/src/JSDOM/Generated/MimeType.hs
--- a/src/JSDOM/Generated/MimeType.hs
+++ b/src/JSDOM/Generated/MimeType.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.type Mozilla MimeType.type documentation> 
diff --git a/src/JSDOM/Generated/MimeTypeArray.hs b/src/JSDOM/Generated/MimeTypeArray.hs
--- a/src/JSDOM/Generated/MimeTypeArray.hs
+++ b/src/JSDOM/Generated/MimeTypeArray.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.item Mozilla MimeTypeArray.item documentation> 
diff --git a/src/JSDOM/Generated/MutationEvent.hs b/src/JSDOM/Generated/MutationEvent.hs
--- a/src/JSDOM/Generated/MutationEvent.hs
+++ b/src/JSDOM/Generated/MutationEvent.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.initMutationEvent Mozilla MutationEvent.initMutationEvent documentation> 
diff --git a/src/JSDOM/Generated/MutationObserver.hs b/src/JSDOM/Generated/MutationObserver.hs
--- a/src/JSDOM/Generated/MutationObserver.hs
+++ b/src/JSDOM/Generated/MutationObserver.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver Mozilla MutationObserver documentation> 
diff --git a/src/JSDOM/Generated/MutationRecord.hs b/src/JSDOM/Generated/MutationRecord.hs
--- a/src/JSDOM/Generated/MutationRecord.hs
+++ b/src/JSDOM/Generated/MutationRecord.hs
@@ -23,7 +23,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.type Mozilla MutationRecord.type documentation> 
@@ -89,7 +89,7 @@
                  (MonadDOM m, FromJSString result) =>
                    MutationRecord -> m (Maybe result)
 getAttributeName self
-  = liftDOM ((self ^. js "attributeName") >>= fromJSVal)
+  = liftDOM ((self ^. js "attributeName") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeName Mozilla MutationRecord.attributeName documentation> 
 getAttributeNameUnsafe ::
@@ -97,7 +97,7 @@
                          MutationRecord -> m result
 getAttributeNameUnsafe self
   = liftDOM
-      (((self ^. js "attributeName") >>= fromJSVal) >>=
+      (((self ^. js "attributeName") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeName Mozilla MutationRecord.attributeName documentation> 
@@ -111,7 +111,7 @@
                       (MonadDOM m, FromJSString result) =>
                         MutationRecord -> m (Maybe result)
 getAttributeNamespace self
-  = liftDOM ((self ^. js "attributeNamespace") >>= fromJSVal)
+  = liftDOM ((self ^. js "attributeNamespace") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeNamespace Mozilla MutationRecord.attributeNamespace documentation> 
 getAttributeNamespaceUnsafe ::
@@ -119,7 +119,7 @@
                               MutationRecord -> m result
 getAttributeNamespaceUnsafe self
   = liftDOM
-      (((self ^. js "attributeNamespace") >>= fromJSVal) >>=
+      (((self ^. js "attributeNamespace") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeNamespace Mozilla MutationRecord.attributeNamespace documentation> 
@@ -133,7 +133,8 @@
 getOldValue ::
             (MonadDOM m, FromJSString result) =>
               MutationRecord -> m (Maybe result)
-getOldValue self = liftDOM ((self ^. js "oldValue") >>= fromJSVal)
+getOldValue self
+  = liftDOM ((self ^. js "oldValue") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.oldValue Mozilla MutationRecord.oldValue documentation> 
 getOldValueUnsafe ::
@@ -141,7 +142,7 @@
                     MutationRecord -> m result
 getOldValueUnsafe self
   = liftDOM
-      (((self ^. js "oldValue") >>= fromJSVal) >>=
+      (((self ^. js "oldValue") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.oldValue Mozilla MutationRecord.oldValue documentation> 
diff --git a/src/JSDOM/Generated/NamedNodeMap.hs b/src/JSDOM/Generated/NamedNodeMap.hs
--- a/src/JSDOM/Generated/NamedNodeMap.hs
+++ b/src/JSDOM/Generated/NamedNodeMap.hs
@@ -23,7 +23,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.item Mozilla NamedNodeMap.item documentation> 
diff --git a/src/JSDOM/Generated/Navigator.hs b/src/JSDOM/Generated/Navigator.hs
--- a/src/JSDOM/Generated/Navigator.hs
+++ b/src/JSDOM/Generated/Navigator.hs
@@ -23,7 +23,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.requestMediaKeySystemAccess Mozilla Navigator.requestMediaKeySystemAccess documentation> 
diff --git a/src/JSDOM/Generated/NavigatorConcurrentHardware.hs b/src/JSDOM/Generated/NavigatorConcurrentHardware.hs
--- a/src/JSDOM/Generated/NavigatorConcurrentHardware.hs
+++ b/src/JSDOM/Generated/NavigatorConcurrentHardware.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorConcurrentHardware.hardwareConcurrency Mozilla NavigatorConcurrentHardware.hardwareConcurrency documentation> 
diff --git a/src/JSDOM/Generated/NavigatorID.hs b/src/JSDOM/Generated/NavigatorID.hs
--- a/src/JSDOM/Generated/NavigatorID.hs
+++ b/src/JSDOM/Generated/NavigatorID.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.appCodeName Mozilla NavigatorID.appCodeName documentation> 
diff --git a/src/JSDOM/Generated/NavigatorLanguage.hs b/src/JSDOM/Generated/NavigatorLanguage.hs
--- a/src/JSDOM/Generated/NavigatorLanguage.hs
+++ b/src/JSDOM/Generated/NavigatorLanguage.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage.language Mozilla NavigatorLanguage.language documentation> 
diff --git a/src/JSDOM/Generated/NavigatorOnLine.hs b/src/JSDOM/Generated/NavigatorOnLine.hs
--- a/src/JSDOM/Generated/NavigatorOnLine.hs
+++ b/src/JSDOM/Generated/NavigatorOnLine.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine.onLine Mozilla NavigatorOnLine.onLine documentation> 
diff --git a/src/JSDOM/Generated/NavigatorUserMediaError.hs b/src/JSDOM/Generated/NavigatorUserMediaError.hs
--- a/src/JSDOM/Generated/NavigatorUserMediaError.hs
+++ b/src/JSDOM/Generated/NavigatorUserMediaError.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaError.constraintName Mozilla NavigatorUserMediaError.constraintName documentation> 
diff --git a/src/JSDOM/Generated/NavigatorUserMediaErrorCallback.hs b/src/JSDOM/Generated/NavigatorUserMediaErrorCallback.hs
--- a/src/JSDOM/Generated/NavigatorUserMediaErrorCallback.hs
+++ b/src/JSDOM/Generated/NavigatorUserMediaErrorCallback.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaErrorCallback Mozilla NavigatorUserMediaErrorCallback documentation> 
diff --git a/src/JSDOM/Generated/NavigatorUserMediaSuccessCallback.hs b/src/JSDOM/Generated/NavigatorUserMediaSuccessCallback.hs
--- a/src/JSDOM/Generated/NavigatorUserMediaSuccessCallback.hs
+++ b/src/JSDOM/Generated/NavigatorUserMediaSuccessCallback.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaSuccessCallback Mozilla NavigatorUserMediaSuccessCallback documentation> 
diff --git a/src/JSDOM/Generated/Node.hs b/src/JSDOM/Generated/Node.hs
--- a/src/JSDOM/Generated/Node.hs
+++ b/src/JSDOM/Generated/Node.hs
@@ -48,7 +48,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.getRootNode Mozilla Node.getRootNode documentation> 
@@ -168,7 +168,7 @@
 lookupPrefix self namespaceURI
   = liftDOM
       (((toNode self) ^. jsf "lookupPrefix" [toJSVal namespaceURI]) >>=
-         fromJSVal)
+         fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupPrefix Mozilla Node.lookupPrefix documentation> 
 lookupPrefix_ ::
@@ -186,7 +186,7 @@
 lookupPrefixUnsafe self namespaceURI
   = liftDOM
       ((((toNode self) ^. jsf "lookupPrefix" [toJSVal namespaceURI]) >>=
-          fromJSVal)
+          fromMaybeJSString)
          >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupPrefix Mozilla Node.lookupPrefix documentation> 
@@ -207,7 +207,7 @@
 lookupNamespaceURI self prefix
   = liftDOM
       (((toNode self) ^. jsf "lookupNamespaceURI" [toJSVal prefix]) >>=
-         fromJSVal)
+         fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupNamespaceURI Mozilla Node.lookupNamespaceURI documentation> 
 lookupNamespaceURI_ ::
@@ -225,7 +225,7 @@
 lookupNamespaceURIUnsafe self prefix
   = liftDOM
       ((((toNode self) ^. jsf "lookupNamespaceURI" [toJSVal prefix]) >>=
-          fromJSVal)
+          fromMaybeJSString)
          >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupNamespaceURI Mozilla Node.lookupNamespaceURI documentation> 
@@ -531,7 +531,7 @@
              (MonadDOM m, IsNode self, FromJSString result) =>
                self -> m (Maybe result)
 getNodeValue self
-  = liftDOM (((toNode self) ^. js "nodeValue") >>= fromJSVal)
+  = liftDOM (((toNode self) ^. js "nodeValue") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
 getNodeValueUnsafe ::
@@ -539,7 +539,7 @@
                      self -> m result
 getNodeValueUnsafe self
   = liftDOM
-      ((((toNode self) ^. js "nodeValue") >>= fromJSVal) >>=
+      ((((toNode self) ^. js "nodeValue") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
@@ -561,7 +561,8 @@
                (MonadDOM m, IsNode self, FromJSString result) =>
                  self -> m (Maybe result)
 getTextContent self
-  = liftDOM (((toNode self) ^. js "textContent") >>= fromJSVal)
+  = liftDOM
+      (((toNode self) ^. js "textContent") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
 getTextContentUnsafe ::
@@ -569,7 +570,7 @@
                        self -> m result
 getTextContentUnsafe self
   = liftDOM
-      ((((toNode self) ^. js "textContent") >>= fromJSVal) >>=
+      ((((toNode self) ^. js "textContent") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
diff --git a/src/JSDOM/Generated/NodeFilter.hs b/src/JSDOM/Generated/NodeFilter.hs
--- a/src/JSDOM/Generated/NodeFilter.hs
+++ b/src/JSDOM/Generated/NodeFilter.hs
@@ -23,7 +23,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter Mozilla NodeFilter documentation> 
diff --git a/src/JSDOM/Generated/NodeIterator.hs b/src/JSDOM/Generated/NodeIterator.hs
--- a/src/JSDOM/Generated/NodeIterator.hs
+++ b/src/JSDOM/Generated/NodeIterator.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.nextNode Mozilla NodeIterator.nextNode documentation> 
diff --git a/src/JSDOM/Generated/NodeList.hs b/src/JSDOM/Generated/NodeList.hs
--- a/src/JSDOM/Generated/NodeList.hs
+++ b/src/JSDOM/Generated/NodeList.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.item Mozilla NodeList.item documentation> 
diff --git a/src/JSDOM/Generated/NonDocumentTypeChildNode.hs b/src/JSDOM/Generated/NonDocumentTypeChildNode.hs
--- a/src/JSDOM/Generated/NonDocumentTypeChildNode.hs
+++ b/src/JSDOM/Generated/NonDocumentTypeChildNode.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode.previousElementSibling Mozilla NonDocumentTypeChildNode.previousElementSibling documentation> 
diff --git a/src/JSDOM/Generated/NonElementParentNode.hs b/src/JSDOM/Generated/NonElementParentNode.hs
--- a/src/JSDOM/Generated/NonElementParentNode.hs
+++ b/src/JSDOM/Generated/NonElementParentNode.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NonElementParentNode.getElementById Mozilla NonElementParentNode.getElementById documentation> 
diff --git a/src/JSDOM/Generated/Notification.hs b/src/JSDOM/Generated/Notification.hs
--- a/src/JSDOM/Generated/Notification.hs
+++ b/src/JSDOM/Generated/Notification.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification Mozilla Notification documentation> 
@@ -41,11 +41,12 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.requestPermission Mozilla Notification.requestPermission documentation> 
 requestPermission ::
                   (MonadDOM m, ToJSString callback) =>
-                    Notification ->
-                      Maybe (NotificationPermissionCallback callback) -> m ()
-requestPermission self callback
+                    Maybe (NotificationPermissionCallback callback) -> m ()
+requestPermission callback
   = liftDOM
-      (void (self ^. jsf "requestPermission" [toJSVal callback]))
+      (void
+         ((jsg "Notification") ^. jsf "requestPermission"
+            [toJSVal callback]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.permission Mozilla Notification.permission documentation> 
 getPermission ::
@@ -59,11 +60,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/JSDOM/Generated/NotificationPermissionCallback.hs b/src/JSDOM/Generated/NotificationPermissionCallback.hs
--- a/src/JSDOM/Generated/NotificationPermissionCallback.hs
+++ b/src/JSDOM/Generated/NotificationPermissionCallback.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationPermissionCallback Mozilla NotificationPermissionCallback documentation> 
diff --git a/src/JSDOM/Generated/OESStandardDerivatives.hs b/src/JSDOM/Generated/OESStandardDerivatives.hs
--- a/src/JSDOM/Generated/OESStandardDerivatives.hs
+++ b/src/JSDOM/Generated/OESStandardDerivatives.hs
@@ -17,6 +17,6 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 35723
diff --git a/src/JSDOM/Generated/OESTextureHalfFloat.hs b/src/JSDOM/Generated/OESTextureHalfFloat.hs
--- a/src/JSDOM/Generated/OESTextureHalfFloat.hs
+++ b/src/JSDOM/Generated/OESTextureHalfFloat.hs
@@ -17,6 +17,6 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern HALF_FLOAT_OES = 36193
diff --git a/src/JSDOM/Generated/OESVertexArrayObject.hs b/src/JSDOM/Generated/OESVertexArrayObject.hs
--- a/src/JSDOM/Generated/OESVertexArrayObject.hs
+++ b/src/JSDOM/Generated/OESVertexArrayObject.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.createVertexArrayOES Mozilla OESVertexArrayObject.createVertexArrayOES documentation> 
diff --git a/src/JSDOM/Generated/OfflineAudioCompletionEvent.hs b/src/JSDOM/Generated/OfflineAudioCompletionEvent.hs
--- a/src/JSDOM/Generated/OfflineAudioCompletionEvent.hs
+++ b/src/JSDOM/Generated/OfflineAudioCompletionEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioCompletionEvent.renderedBuffer Mozilla OfflineAudioCompletionEvent.renderedBuffer documentation> 
diff --git a/src/JSDOM/Generated/OfflineAudioContext.hs b/src/JSDOM/Generated/OfflineAudioContext.hs
--- a/src/JSDOM/Generated/OfflineAudioContext.hs
+++ b/src/JSDOM/Generated/OfflineAudioContext.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioContext Mozilla OfflineAudioContext documentation> 
diff --git a/src/JSDOM/Generated/OscillatorNode.hs b/src/JSDOM/Generated/OscillatorNode.hs
--- a/src/JSDOM/Generated/OscillatorNode.hs
+++ b/src/JSDOM/Generated/OscillatorNode.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.start Mozilla OscillatorNode.start documentation> 
diff --git a/src/JSDOM/Generated/OverconstrainedError.hs b/src/JSDOM/Generated/OverconstrainedError.hs
--- a/src/JSDOM/Generated/OverconstrainedError.hs
+++ b/src/JSDOM/Generated/OverconstrainedError.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedError Mozilla OverconstrainedError documentation> 
diff --git a/src/JSDOM/Generated/OverconstrainedErrorEvent.hs b/src/JSDOM/Generated/OverconstrainedErrorEvent.hs
--- a/src/JSDOM/Generated/OverconstrainedErrorEvent.hs
+++ b/src/JSDOM/Generated/OverconstrainedErrorEvent.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedErrorEvent Mozilla OverconstrainedErrorEvent documentation> 
diff --git a/src/JSDOM/Generated/OverflowEvent.hs b/src/JSDOM/Generated/OverflowEvent.hs
--- a/src/JSDOM/Generated/OverflowEvent.hs
+++ b/src/JSDOM/Generated/OverflowEvent.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent Mozilla OverflowEvent documentation> 
diff --git a/src/JSDOM/Generated/PageTransitionEvent.hs b/src/JSDOM/Generated/PageTransitionEvent.hs
--- a/src/JSDOM/Generated/PageTransitionEvent.hs
+++ b/src/JSDOM/Generated/PageTransitionEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PageTransitionEvent Mozilla PageTransitionEvent documentation> 
diff --git a/src/JSDOM/Generated/PannerNode.hs b/src/JSDOM/Generated/PannerNode.hs
--- a/src/JSDOM/Generated/PannerNode.hs
+++ b/src/JSDOM/Generated/PannerNode.hs
@@ -22,7 +22,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.setPosition Mozilla webkitAudioPannerNode.setPosition documentation> 
diff --git a/src/JSDOM/Generated/ParentNode.hs b/src/JSDOM/Generated/ParentNode.hs
--- a/src/JSDOM/Generated/ParentNode.hs
+++ b/src/JSDOM/Generated/ParentNode.hs
@@ -22,7 +22,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.prepend Mozilla ParentNode.prepend documentation> 
diff --git a/src/JSDOM/Generated/PasswordCredential.hs b/src/JSDOM/Generated/PasswordCredential.hs
--- a/src/JSDOM/Generated/PasswordCredential.hs
+++ b/src/JSDOM/Generated/PasswordCredential.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential Mozilla PasswordCredential documentation> 
diff --git a/src/JSDOM/Generated/Path2D.hs b/src/JSDOM/Generated/Path2D.hs
--- a/src/JSDOM/Generated/Path2D.hs
+++ b/src/JSDOM/Generated/Path2D.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation> 
diff --git a/src/JSDOM/Generated/Performance.hs b/src/JSDOM/Generated/Performance.hs
--- a/src/JSDOM/Generated/Performance.hs
+++ b/src/JSDOM/Generated/Performance.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.now Mozilla Performance.now documentation> 
diff --git a/src/JSDOM/Generated/PerformanceEntry.hs b/src/JSDOM/Generated/PerformanceEntry.hs
--- a/src/JSDOM/Generated/PerformanceEntry.hs
+++ b/src/JSDOM/Generated/PerformanceEntry.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.name Mozilla PerformanceEntry.name documentation> 
diff --git a/src/JSDOM/Generated/PerformanceNavigation.hs b/src/JSDOM/Generated/PerformanceNavigation.hs
--- a/src/JSDOM/Generated/PerformanceNavigation.hs
+++ b/src/JSDOM/Generated/PerformanceNavigation.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern TYPE_NAVIGATE = 0
 pattern TYPE_RELOAD = 1
diff --git a/src/JSDOM/Generated/PerformanceObserver.hs b/src/JSDOM/Generated/PerformanceObserver.hs
--- a/src/JSDOM/Generated/PerformanceObserver.hs
+++ b/src/JSDOM/Generated/PerformanceObserver.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver Mozilla PerformanceObserver documentation> 
diff --git a/src/JSDOM/Generated/PerformanceObserverCallback.hs b/src/JSDOM/Generated/PerformanceObserverCallback.hs
--- a/src/JSDOM/Generated/PerformanceObserverCallback.hs
+++ b/src/JSDOM/Generated/PerformanceObserverCallback.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverCallback Mozilla PerformanceObserverCallback documentation> 
diff --git a/src/JSDOM/Generated/PerformanceObserverEntryList.hs b/src/JSDOM/Generated/PerformanceObserverEntryList.hs
--- a/src/JSDOM/Generated/PerformanceObserverEntryList.hs
+++ b/src/JSDOM/Generated/PerformanceObserverEntryList.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntries Mozilla PerformanceObserverEntryList.getEntries documentation> 
diff --git a/src/JSDOM/Generated/PerformanceResourceTiming.hs b/src/JSDOM/Generated/PerformanceResourceTiming.hs
--- a/src/JSDOM/Generated/PerformanceResourceTiming.hs
+++ b/src/JSDOM/Generated/PerformanceResourceTiming.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.initiatorType Mozilla PerformanceResourceTiming.initiatorType documentation> 
diff --git a/src/JSDOM/Generated/PerformanceTiming.hs b/src/JSDOM/Generated/PerformanceTiming.hs
--- a/src/JSDOM/Generated/PerformanceTiming.hs
+++ b/src/JSDOM/Generated/PerformanceTiming.hs
@@ -23,7 +23,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.navigationStart Mozilla PerformanceTiming.navigationStart documentation> 
diff --git a/src/JSDOM/Generated/Plugin.hs b/src/JSDOM/Generated/Plugin.hs
--- a/src/JSDOM/Generated/Plugin.hs
+++ b/src/JSDOM/Generated/Plugin.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.item Mozilla Plugin.item documentation> 
diff --git a/src/JSDOM/Generated/PluginArray.hs b/src/JSDOM/Generated/PluginArray.hs
--- a/src/JSDOM/Generated/PluginArray.hs
+++ b/src/JSDOM/Generated/PluginArray.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.item Mozilla PluginArray.item documentation> 
diff --git a/src/JSDOM/Generated/PopStateEvent.hs b/src/JSDOM/Generated/PopStateEvent.hs
--- a/src/JSDOM/Generated/PopStateEvent.hs
+++ b/src/JSDOM/Generated/PopStateEvent.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PopStateEvent Mozilla PopStateEvent documentation> 
diff --git a/src/JSDOM/Generated/PositionCallback.hs b/src/JSDOM/Generated/PositionCallback.hs
--- a/src/JSDOM/Generated/PositionCallback.hs
+++ b/src/JSDOM/Generated/PositionCallback.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionCallback Mozilla PositionCallback documentation> 
diff --git a/src/JSDOM/Generated/PositionError.hs b/src/JSDOM/Generated/PositionError.hs
--- a/src/JSDOM/Generated/PositionError.hs
+++ b/src/JSDOM/Generated/PositionError.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern PERMISSION_DENIED = 1
 pattern POSITION_UNAVAILABLE = 2
diff --git a/src/JSDOM/Generated/PositionErrorCallback.hs b/src/JSDOM/Generated/PositionErrorCallback.hs
--- a/src/JSDOM/Generated/PositionErrorCallback.hs
+++ b/src/JSDOM/Generated/PositionErrorCallback.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionErrorCallback Mozilla PositionErrorCallback documentation> 
diff --git a/src/JSDOM/Generated/ProcessingInstruction.hs b/src/JSDOM/Generated/ProcessingInstruction.hs
--- a/src/JSDOM/Generated/ProcessingInstruction.hs
+++ b/src/JSDOM/Generated/ProcessingInstruction.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.target Mozilla ProcessingInstruction.target documentation> 
diff --git a/src/JSDOM/Generated/ProgressEvent.hs b/src/JSDOM/Generated/ProgressEvent.hs
--- a/src/JSDOM/Generated/ProgressEvent.hs
+++ b/src/JSDOM/Generated/ProgressEvent.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent Mozilla ProgressEvent documentation> 
diff --git a/src/JSDOM/Generated/PromiseRejectionEvent.hs b/src/JSDOM/Generated/PromiseRejectionEvent.hs
--- a/src/JSDOM/Generated/PromiseRejectionEvent.hs
+++ b/src/JSDOM/Generated/PromiseRejectionEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent Mozilla PromiseRejectionEvent documentation> 
diff --git a/src/JSDOM/Generated/QuickTimePluginReplacement.hs b/src/JSDOM/Generated/QuickTimePluginReplacement.hs
--- a/src/JSDOM/Generated/QuickTimePluginReplacement.hs
+++ b/src/JSDOM/Generated/QuickTimePluginReplacement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.postEvent Mozilla QuickTimePluginReplacement.postEvent documentation> 
diff --git a/src/JSDOM/Generated/RGBColor.hs b/src/JSDOM/Generated/RGBColor.hs
--- a/src/JSDOM/Generated/RGBColor.hs
+++ b/src/JSDOM/Generated/RGBColor.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.red Mozilla RGBColor.red documentation> 
diff --git a/src/JSDOM/Generated/RTCDTMFSender.hs b/src/JSDOM/Generated/RTCDTMFSender.hs
--- a/src/JSDOM/Generated/RTCDTMFSender.hs
+++ b/src/JSDOM/Generated/RTCDTMFSender.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.insertDTMF Mozilla RTCDTMFSender.insertDTMF documentation> 
diff --git a/src/JSDOM/Generated/RTCDTMFToneChangeEvent.hs b/src/JSDOM/Generated/RTCDTMFToneChangeEvent.hs
--- a/src/JSDOM/Generated/RTCDTMFToneChangeEvent.hs
+++ b/src/JSDOM/Generated/RTCDTMFToneChangeEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFToneChangeEvent Mozilla RTCDTMFToneChangeEvent documentation> 
diff --git a/src/JSDOM/Generated/RTCDataChannel.hs b/src/JSDOM/Generated/RTCDataChannel.hs
--- a/src/JSDOM/Generated/RTCDataChannel.hs
+++ b/src/JSDOM/Generated/RTCDataChannel.hs
@@ -24,7 +24,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
@@ -175,19 +175,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/JSDOM/Generated/RTCDataChannelEvent.hs b/src/JSDOM/Generated/RTCDataChannelEvent.hs
--- a/src/JSDOM/Generated/RTCDataChannelEvent.hs
+++ b/src/JSDOM/Generated/RTCDataChannelEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelEvent Mozilla RTCDataChannelEvent documentation> 
diff --git a/src/JSDOM/Generated/RTCIceCandidate.hs b/src/JSDOM/Generated/RTCIceCandidate.hs
--- a/src/JSDOM/Generated/RTCIceCandidate.hs
+++ b/src/JSDOM/Generated/RTCIceCandidate.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate Mozilla RTCIceCandidate documentation> 
@@ -40,7 +40,8 @@
 getSdpMid ::
           (MonadDOM m, FromJSString result) =>
             RTCIceCandidate -> m (Maybe result)
-getSdpMid self = liftDOM ((self ^. js "sdpMid") >>= fromJSVal)
+getSdpMid self
+  = liftDOM ((self ^. js "sdpMid") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMid Mozilla RTCIceCandidate.sdpMid documentation> 
 getSdpMidUnsafe ::
@@ -48,7 +49,7 @@
                   RTCIceCandidate -> m result
 getSdpMidUnsafe self
   = liftDOM
-      (((self ^. js "sdpMid") >>= fromJSVal) >>=
+      (((self ^. js "sdpMid") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMid Mozilla RTCIceCandidate.sdpMid documentation> 
diff --git a/src/JSDOM/Generated/RTCIceCandidateEvent.hs b/src/JSDOM/Generated/RTCIceCandidateEvent.hs
--- a/src/JSDOM/Generated/RTCIceCandidateEvent.hs
+++ b/src/JSDOM/Generated/RTCIceCandidateEvent.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateEvent.candidate Mozilla RTCIceCandidateEvent.candidate documentation> 
diff --git a/src/JSDOM/Generated/RTCIceTransport.hs b/src/JSDOM/Generated/RTCIceTransport.hs
--- a/src/JSDOM/Generated/RTCIceTransport.hs
+++ b/src/JSDOM/Generated/RTCIceTransport.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceTransport.state Mozilla RTCIceTransport.state documentation> 
diff --git a/src/JSDOM/Generated/RTCPeerConnection.hs b/src/JSDOM/Generated/RTCPeerConnection.hs
--- a/src/JSDOM/Generated/RTCPeerConnection.hs
+++ b/src/JSDOM/Generated/RTCPeerConnection.hs
@@ -40,7 +40,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createOffer Mozilla webkitRTCPeerConnection.createOffer documentation> 
diff --git a/src/JSDOM/Generated/RTCPeerConnectionIceEvent.hs b/src/JSDOM/Generated/RTCPeerConnectionIceEvent.hs
--- a/src/JSDOM/Generated/RTCPeerConnectionIceEvent.hs
+++ b/src/JSDOM/Generated/RTCPeerConnectionIceEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionIceEvent.candidate Mozilla RTCPeerConnectionIceEvent.candidate documentation> 
diff --git a/src/JSDOM/Generated/RTCRtpReceiver.hs b/src/JSDOM/Generated/RTCRtpReceiver.hs
--- a/src/JSDOM/Generated/RTCRtpReceiver.hs
+++ b/src/JSDOM/Generated/RTCRtpReceiver.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpReceiver.getParameters Mozilla RTCRtpReceiver.getParameters documentation> 
diff --git a/src/JSDOM/Generated/RTCRtpSender.hs b/src/JSDOM/Generated/RTCRtpSender.hs
--- a/src/JSDOM/Generated/RTCRtpSender.hs
+++ b/src/JSDOM/Generated/RTCRtpSender.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.getParameters Mozilla RTCRtpSender.getParameters documentation> 
diff --git a/src/JSDOM/Generated/RTCRtpTransceiver.hs b/src/JSDOM/Generated/RTCRtpTransceiver.hs
--- a/src/JSDOM/Generated/RTCRtpTransceiver.hs
+++ b/src/JSDOM/Generated/RTCRtpTransceiver.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.setDirection Mozilla RTCRtpTransceiver.setDirection documentation> 
@@ -36,7 +36,7 @@
 getMid ::
        (MonadDOM m, FromJSString result) =>
          RTCRtpTransceiver -> m (Maybe result)
-getMid self = liftDOM ((self ^. js "mid") >>= fromJSVal)
+getMid self = liftDOM ((self ^. js "mid") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.mid Mozilla RTCRtpTransceiver.mid documentation> 
 getMidUnsafe ::
@@ -44,7 +44,7 @@
                RTCRtpTransceiver -> m result
 getMidUnsafe self
   = liftDOM
-      (((self ^. js "mid") >>= fromJSVal) >>=
+      (((self ^. js "mid") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.mid Mozilla RTCRtpTransceiver.mid documentation> 
diff --git a/src/JSDOM/Generated/RTCSessionDescription.hs b/src/JSDOM/Generated/RTCSessionDescription.hs
--- a/src/JSDOM/Generated/RTCSessionDescription.hs
+++ b/src/JSDOM/Generated/RTCSessionDescription.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription Mozilla RTCSessionDescription documentation> 
diff --git a/src/JSDOM/Generated/RTCTrackEvent.hs b/src/JSDOM/Generated/RTCTrackEvent.hs
--- a/src/JSDOM/Generated/RTCTrackEvent.hs
+++ b/src/JSDOM/Generated/RTCTrackEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCTrackEvent Mozilla RTCTrackEvent documentation> 
diff --git a/src/JSDOM/Generated/RadioNodeList.hs b/src/JSDOM/Generated/RadioNodeList.hs
--- a/src/JSDOM/Generated/RadioNodeList.hs
+++ b/src/JSDOM/Generated/RadioNodeList.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList.get Mozilla RadioNodeList.get documentation> 
diff --git a/src/JSDOM/Generated/Range.hs b/src/JSDOM/Generated/Range.hs
--- a/src/JSDOM/Generated/Range.hs
+++ b/src/JSDOM/Generated/Range.hs
@@ -30,7 +30,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range Mozilla Range documentation> 
diff --git a/src/JSDOM/Generated/ReadableByteStreamController.hs b/src/JSDOM/Generated/ReadableByteStreamController.hs
--- a/src/JSDOM/Generated/ReadableByteStreamController.hs
+++ b/src/JSDOM/Generated/ReadableByteStreamController.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController Mozilla ReadableByteStreamController documentation> 
diff --git a/src/JSDOM/Generated/ReadableStream.hs b/src/JSDOM/Generated/ReadableStream.hs
--- a/src/JSDOM/Generated/ReadableStream.hs
+++ b/src/JSDOM/Generated/ReadableStream.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream Mozilla ReadableStream documentation> 
diff --git a/src/JSDOM/Generated/ReadableStreamBYOBReader.hs b/src/JSDOM/Generated/ReadableStreamBYOBReader.hs
--- a/src/JSDOM/Generated/ReadableStreamBYOBReader.hs
+++ b/src/JSDOM/Generated/ReadableStreamBYOBReader.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader Mozilla ReadableStreamBYOBReader documentation> 
diff --git a/src/JSDOM/Generated/ReadableStreamBYOBRequest.hs b/src/JSDOM/Generated/ReadableStreamBYOBRequest.hs
--- a/src/JSDOM/Generated/ReadableStreamBYOBRequest.hs
+++ b/src/JSDOM/Generated/ReadableStreamBYOBRequest.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest Mozilla ReadableStreamBYOBRequest documentation> 
diff --git a/src/JSDOM/Generated/ReadableStreamDefaultController.hs b/src/JSDOM/Generated/ReadableStreamDefaultController.hs
--- a/src/JSDOM/Generated/ReadableStreamDefaultController.hs
+++ b/src/JSDOM/Generated/ReadableStreamDefaultController.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController Mozilla ReadableStreamDefaultController documentation> 
diff --git a/src/JSDOM/Generated/ReadableStreamDefaultReader.hs b/src/JSDOM/Generated/ReadableStreamDefaultReader.hs
--- a/src/JSDOM/Generated/ReadableStreamDefaultReader.hs
+++ b/src/JSDOM/Generated/ReadableStreamDefaultReader.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader Mozilla ReadableStreamDefaultReader documentation> 
diff --git a/src/JSDOM/Generated/ReadableStreamSource.hs b/src/JSDOM/Generated/ReadableStreamSource.hs
--- a/src/JSDOM/Generated/ReadableStreamSource.hs
+++ b/src/JSDOM/Generated/ReadableStreamSource.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamSource.start Mozilla ReadableStreamSource.start documentation> 
diff --git a/src/JSDOM/Generated/Rect.hs b/src/JSDOM/Generated/Rect.hs
--- a/src/JSDOM/Generated/Rect.hs
+++ b/src/JSDOM/Generated/Rect.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.top Mozilla Rect.top documentation> 
diff --git a/src/JSDOM/Generated/Request.hs b/src/JSDOM/Generated/Request.hs
--- a/src/JSDOM/Generated/Request.hs
+++ b/src/JSDOM/Generated/Request.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Request Mozilla Request documentation> 
diff --git a/src/JSDOM/Generated/RequestAnimationFrameCallback.hs b/src/JSDOM/Generated/RequestAnimationFrameCallback.hs
--- a/src/JSDOM/Generated/RequestAnimationFrameCallback.hs
+++ b/src/JSDOM/Generated/RequestAnimationFrameCallback.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RequestAnimationFrameCallback Mozilla RequestAnimationFrameCallback documentation> 
diff --git a/src/JSDOM/Generated/Response.hs b/src/JSDOM/Generated/Response.hs
--- a/src/JSDOM/Generated/Response.hs
+++ b/src/JSDOM/Generated/Response.hs
@@ -20,34 +20,34 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.error Mozilla Response.error documentation> 
-error :: (MonadDOM m) => Response -> m Response
-error self
-  = liftDOM ((self ^. jsf "error" ()) >>= fromJSValUnchecked)
+error :: (MonadDOM m) => m Response
+error
+  = liftDOM
+      (((jsg "Response") ^. jsf "error" ()) >>= fromJSValUnchecked)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.error Mozilla Response.error documentation> 
-error_ :: (MonadDOM m) => Response -> m ()
-error_ self = liftDOM (void (self ^. jsf "error" ()))
+error_ :: (MonadDOM m) => m ()
+error_ = liftDOM (void ((jsg "Response") ^. jsf "error" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.redirect Mozilla Response.redirect documentation> 
 redirect ::
-         (MonadDOM m, ToJSString url) =>
-           Response -> url -> Maybe Word -> m Response
-redirect self url status
+         (MonadDOM m, ToJSString url) => url -> Maybe Word -> m Response
+redirect url status
   = liftDOM
-      ((self ^. jsf "redirect" [toJSVal url, toJSVal status]) >>=
-         fromJSValUnchecked)
+      (((jsg "Response") ^. jsf "redirect" [toJSVal url, toJSVal status])
+         >>= fromJSValUnchecked)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.redirect Mozilla Response.redirect documentation> 
 redirect_ ::
-          (MonadDOM m, ToJSString url) =>
-            Response -> url -> Maybe Word -> m ()
-redirect_ self url status
+          (MonadDOM m, ToJSString url) => url -> Maybe Word -> m ()
+redirect_ url status
   = liftDOM
-      (void (self ^. jsf "redirect" [toJSVal url, toJSVal status]))
+      (void
+         ((jsg "Response") ^. jsf "redirect" [toJSVal url, toJSVal status]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.arrayBuffer Mozilla Response.arrayBuffer documentation> 
 arrayBuffer :: (MonadDOM m) => Response -> m ArrayBuffer
diff --git a/src/JSDOM/Generated/SQLError.hs b/src/JSDOM/Generated/SQLError.hs
--- a/src/JSDOM/Generated/SQLError.hs
+++ b/src/JSDOM/Generated/SQLError.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern UNKNOWN_ERR = 0
 pattern DATABASE_ERR = 1
diff --git a/src/JSDOM/Generated/SQLException.hs b/src/JSDOM/Generated/SQLException.hs
--- a/src/JSDOM/Generated/SQLException.hs
+++ b/src/JSDOM/Generated/SQLException.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern UNKNOWN_ERR = 0
 pattern DATABASE_ERR = 1
diff --git a/src/JSDOM/Generated/SQLResultSet.hs b/src/JSDOM/Generated/SQLResultSet.hs
--- a/src/JSDOM/Generated/SQLResultSet.hs
+++ b/src/JSDOM/Generated/SQLResultSet.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.rows Mozilla SQLResultSet.rows documentation> 
diff --git a/src/JSDOM/Generated/SQLResultSetRowList.hs b/src/JSDOM/Generated/SQLResultSetRowList.hs
--- a/src/JSDOM/Generated/SQLResultSetRowList.hs
+++ b/src/JSDOM/Generated/SQLResultSetRowList.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList.item Mozilla SQLResultSetRowList.item documentation> 
diff --git a/src/JSDOM/Generated/SQLStatementCallback.hs b/src/JSDOM/Generated/SQLStatementCallback.hs
--- a/src/JSDOM/Generated/SQLStatementCallback.hs
+++ b/src/JSDOM/Generated/SQLStatementCallback.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementCallback Mozilla SQLStatementCallback documentation> 
diff --git a/src/JSDOM/Generated/SQLStatementErrorCallback.hs b/src/JSDOM/Generated/SQLStatementErrorCallback.hs
--- a/src/JSDOM/Generated/SQLStatementErrorCallback.hs
+++ b/src/JSDOM/Generated/SQLStatementErrorCallback.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementErrorCallback Mozilla SQLStatementErrorCallback documentation> 
diff --git a/src/JSDOM/Generated/SQLTransaction.hs b/src/JSDOM/Generated/SQLTransaction.hs
--- a/src/JSDOM/Generated/SQLTransaction.hs
+++ b/src/JSDOM/Generated/SQLTransaction.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransaction.executeSql Mozilla SQLTransaction.executeSql documentation> 
diff --git a/src/JSDOM/Generated/SQLTransactionCallback.hs b/src/JSDOM/Generated/SQLTransactionCallback.hs
--- a/src/JSDOM/Generated/SQLTransactionCallback.hs
+++ b/src/JSDOM/Generated/SQLTransactionCallback.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionCallback Mozilla SQLTransactionCallback documentation> 
diff --git a/src/JSDOM/Generated/SQLTransactionErrorCallback.hs b/src/JSDOM/Generated/SQLTransactionErrorCallback.hs
--- a/src/JSDOM/Generated/SQLTransactionErrorCallback.hs
+++ b/src/JSDOM/Generated/SQLTransactionErrorCallback.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
diff --git a/src/JSDOM/Generated/SVGAElement.hs b/src/JSDOM/Generated/SVGAElement.hs
--- a/src/JSDOM/Generated/SVGAElement.hs
+++ b/src/JSDOM/Generated/SVGAElement.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAElement.target Mozilla SVGAElement.target documentation> 
diff --git a/src/JSDOM/Generated/SVGAltGlyphElement.hs b/src/JSDOM/Generated/SVGAltGlyphElement.hs
--- a/src/JSDOM/Generated/SVGAltGlyphElement.hs
+++ b/src/JSDOM/Generated/SVGAltGlyphElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.glyphRef Mozilla SVGAltGlyphElement.glyphRef documentation> 
diff --git a/src/JSDOM/Generated/SVGAngle.hs b/src/JSDOM/Generated/SVGAngle.hs
--- a/src/JSDOM/Generated/SVGAngle.hs
+++ b/src/JSDOM/Generated/SVGAngle.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.newValueSpecifiedUnits Mozilla SVGAngle.newValueSpecifiedUnits documentation> 
diff --git a/src/JSDOM/Generated/SVGAnimatedAngle.hs b/src/JSDOM/Generated/SVGAnimatedAngle.hs
--- a/src/JSDOM/Generated/SVGAnimatedAngle.hs
+++ b/src/JSDOM/Generated/SVGAnimatedAngle.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle.baseVal Mozilla SVGAnimatedAngle.baseVal documentation> 
diff --git a/src/JSDOM/Generated/SVGAnimatedBoolean.hs b/src/JSDOM/Generated/SVGAnimatedBoolean.hs
--- a/src/JSDOM/Generated/SVGAnimatedBoolean.hs
+++ b/src/JSDOM/Generated/SVGAnimatedBoolean.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean.baseVal Mozilla SVGAnimatedBoolean.baseVal documentation> 
diff --git a/src/JSDOM/Generated/SVGAnimatedEnumeration.hs b/src/JSDOM/Generated/SVGAnimatedEnumeration.hs
--- a/src/JSDOM/Generated/SVGAnimatedEnumeration.hs
+++ b/src/JSDOM/Generated/SVGAnimatedEnumeration.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration.baseVal Mozilla SVGAnimatedEnumeration.baseVal documentation> 
diff --git a/src/JSDOM/Generated/SVGAnimatedInteger.hs b/src/JSDOM/Generated/SVGAnimatedInteger.hs
--- a/src/JSDOM/Generated/SVGAnimatedInteger.hs
+++ b/src/JSDOM/Generated/SVGAnimatedInteger.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger.baseVal Mozilla SVGAnimatedInteger.baseVal documentation> 
diff --git a/src/JSDOM/Generated/SVGAnimatedLength.hs b/src/JSDOM/Generated/SVGAnimatedLength.hs
--- a/src/JSDOM/Generated/SVGAnimatedLength.hs
+++ b/src/JSDOM/Generated/SVGAnimatedLength.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength.baseVal Mozilla SVGAnimatedLength.baseVal documentation> 
diff --git a/src/JSDOM/Generated/SVGAnimatedLengthList.hs b/src/JSDOM/Generated/SVGAnimatedLengthList.hs
--- a/src/JSDOM/Generated/SVGAnimatedLengthList.hs
+++ b/src/JSDOM/Generated/SVGAnimatedLengthList.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList.baseVal Mozilla SVGAnimatedLengthList.baseVal documentation> 
diff --git a/src/JSDOM/Generated/SVGAnimatedNumber.hs b/src/JSDOM/Generated/SVGAnimatedNumber.hs
--- a/src/JSDOM/Generated/SVGAnimatedNumber.hs
+++ b/src/JSDOM/Generated/SVGAnimatedNumber.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber.baseVal Mozilla SVGAnimatedNumber.baseVal documentation> 
diff --git a/src/JSDOM/Generated/SVGAnimatedNumberList.hs b/src/JSDOM/Generated/SVGAnimatedNumberList.hs
--- a/src/JSDOM/Generated/SVGAnimatedNumberList.hs
+++ b/src/JSDOM/Generated/SVGAnimatedNumberList.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList.baseVal Mozilla SVGAnimatedNumberList.baseVal documentation> 
diff --git a/src/JSDOM/Generated/SVGAnimatedPreserveAspectRatio.hs b/src/JSDOM/Generated/SVGAnimatedPreserveAspectRatio.hs
--- a/src/JSDOM/Generated/SVGAnimatedPreserveAspectRatio.hs
+++ b/src/JSDOM/Generated/SVGAnimatedPreserveAspectRatio.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio.baseVal Mozilla SVGAnimatedPreserveAspectRatio.baseVal documentation> 
diff --git a/src/JSDOM/Generated/SVGAnimatedRect.hs b/src/JSDOM/Generated/SVGAnimatedRect.hs
--- a/src/JSDOM/Generated/SVGAnimatedRect.hs
+++ b/src/JSDOM/Generated/SVGAnimatedRect.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect.baseVal Mozilla SVGAnimatedRect.baseVal documentation> 
diff --git a/src/JSDOM/Generated/SVGAnimatedString.hs b/src/JSDOM/Generated/SVGAnimatedString.hs
--- a/src/JSDOM/Generated/SVGAnimatedString.hs
+++ b/src/JSDOM/Generated/SVGAnimatedString.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString.baseVal Mozilla SVGAnimatedString.baseVal documentation> 
diff --git a/src/JSDOM/Generated/SVGAnimatedTransformList.hs b/src/JSDOM/Generated/SVGAnimatedTransformList.hs
--- a/src/JSDOM/Generated/SVGAnimatedTransformList.hs
+++ b/src/JSDOM/Generated/SVGAnimatedTransformList.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList.baseVal Mozilla SVGAnimatedTransformList.baseVal documentation> 
diff --git a/src/JSDOM/Generated/SVGAnimationElement.hs b/src/JSDOM/Generated/SVGAnimationElement.hs
--- a/src/JSDOM/Generated/SVGAnimationElement.hs
+++ b/src/JSDOM/Generated/SVGAnimationElement.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getStartTime Mozilla SVGAnimationElement.getStartTime documentation> 
diff --git a/src/JSDOM/Generated/SVGCircleElement.hs b/src/JSDOM/Generated/SVGCircleElement.hs
--- a/src/JSDOM/Generated/SVGCircleElement.hs
+++ b/src/JSDOM/Generated/SVGCircleElement.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.cx Mozilla SVGCircleElement.cx documentation> 
diff --git a/src/JSDOM/Generated/SVGClipPathElement.hs b/src/JSDOM/Generated/SVGClipPathElement.hs
--- a/src/JSDOM/Generated/SVGClipPathElement.hs
+++ b/src/JSDOM/Generated/SVGClipPathElement.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGClipPathElement.clipPathUnits Mozilla SVGClipPathElement.clipPathUnits documentation> 
diff --git a/src/JSDOM/Generated/SVGComponentTransferFunctionElement.hs b/src/JSDOM/Generated/SVGComponentTransferFunctionElement.hs
--- a/src/JSDOM/Generated/SVGComponentTransferFunctionElement.hs
+++ b/src/JSDOM/Generated/SVGComponentTransferFunctionElement.hs
@@ -26,7 +26,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0
 pattern SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1
diff --git a/src/JSDOM/Generated/SVGCursorElement.hs b/src/JSDOM/Generated/SVGCursorElement.hs
--- a/src/JSDOM/Generated/SVGCursorElement.hs
+++ b/src/JSDOM/Generated/SVGCursorElement.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement.x Mozilla SVGCursorElement.x documentation> 
diff --git a/src/JSDOM/Generated/SVGElement.hs b/src/JSDOM/Generated/SVGElement.hs
--- a/src/JSDOM/Generated/SVGElement.hs
+++ b/src/JSDOM/Generated/SVGElement.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.getPresentationAttribute Mozilla SVGElement.getPresentationAttribute documentation> 
diff --git a/src/JSDOM/Generated/SVGEllipseElement.hs b/src/JSDOM/Generated/SVGEllipseElement.hs
--- a/src/JSDOM/Generated/SVGEllipseElement.hs
+++ b/src/JSDOM/Generated/SVGEllipseElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.cx Mozilla SVGEllipseElement.cx documentation> 
diff --git a/src/JSDOM/Generated/SVGException.hs b/src/JSDOM/Generated/SVGException.hs
--- a/src/JSDOM/Generated/SVGException.hs
+++ b/src/JSDOM/Generated/SVGException.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGException.toString Mozilla SVGException.toString documentation> 
diff --git a/src/JSDOM/Generated/SVGExternalResourcesRequired.hs b/src/JSDOM/Generated/SVGExternalResourcesRequired.hs
--- a/src/JSDOM/Generated/SVGExternalResourcesRequired.hs
+++ b/src/JSDOM/Generated/SVGExternalResourcesRequired.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGExternalResourcesRequired.externalResourcesRequired Mozilla SVGExternalResourcesRequired.externalResourcesRequired documentation> 
diff --git a/src/JSDOM/Generated/SVGFEBlendElement.hs b/src/JSDOM/Generated/SVGFEBlendElement.hs
--- a/src/JSDOM/Generated/SVGFEBlendElement.hs
+++ b/src/JSDOM/Generated/SVGFEBlendElement.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern SVG_FEBLEND_MODE_UNKNOWN = 0
 pattern SVG_FEBLEND_MODE_NORMAL = 1
diff --git a/src/JSDOM/Generated/SVGFEColorMatrixElement.hs b/src/JSDOM/Generated/SVGFEColorMatrixElement.hs
--- a/src/JSDOM/Generated/SVGFEColorMatrixElement.hs
+++ b/src/JSDOM/Generated/SVGFEColorMatrixElement.hs
@@ -22,7 +22,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0
 pattern SVG_FECOLORMATRIX_TYPE_MATRIX = 1
diff --git a/src/JSDOM/Generated/SVGFEComponentTransferElement.hs b/src/JSDOM/Generated/SVGFEComponentTransferElement.hs
--- a/src/JSDOM/Generated/SVGFEComponentTransferElement.hs
+++ b/src/JSDOM/Generated/SVGFEComponentTransferElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEComponentTransferElement.in1 Mozilla SVGFEComponentTransferElement.in1 documentation> 
diff --git a/src/JSDOM/Generated/SVGFECompositeElement.hs b/src/JSDOM/Generated/SVGFECompositeElement.hs
--- a/src/JSDOM/Generated/SVGFECompositeElement.hs
+++ b/src/JSDOM/Generated/SVGFECompositeElement.hs
@@ -24,7 +24,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0
 pattern SVG_FECOMPOSITE_OPERATOR_OVER = 1
diff --git a/src/JSDOM/Generated/SVGFEConvolveMatrixElement.hs b/src/JSDOM/Generated/SVGFEConvolveMatrixElement.hs
--- a/src/JSDOM/Generated/SVGFEConvolveMatrixElement.hs
+++ b/src/JSDOM/Generated/SVGFEConvolveMatrixElement.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern SVG_EDGEMODE_UNKNOWN = 0
 pattern SVG_EDGEMODE_DUPLICATE = 1
diff --git a/src/JSDOM/Generated/SVGFEDiffuseLightingElement.hs b/src/JSDOM/Generated/SVGFEDiffuseLightingElement.hs
--- a/src/JSDOM/Generated/SVGFEDiffuseLightingElement.hs
+++ b/src/JSDOM/Generated/SVGFEDiffuseLightingElement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.in1 Mozilla SVGFEDiffuseLightingElement.in1 documentation> 
diff --git a/src/JSDOM/Generated/SVGFEDisplacementMapElement.hs b/src/JSDOM/Generated/SVGFEDisplacementMapElement.hs
--- a/src/JSDOM/Generated/SVGFEDisplacementMapElement.hs
+++ b/src/JSDOM/Generated/SVGFEDisplacementMapElement.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern SVG_CHANNEL_UNKNOWN = 0
 pattern SVG_CHANNEL_R = 1
diff --git a/src/JSDOM/Generated/SVGFEDistantLightElement.hs b/src/JSDOM/Generated/SVGFEDistantLightElement.hs
--- a/src/JSDOM/Generated/SVGFEDistantLightElement.hs
+++ b/src/JSDOM/Generated/SVGFEDistantLightElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement.azimuth Mozilla SVGFEDistantLightElement.azimuth documentation> 
diff --git a/src/JSDOM/Generated/SVGFEDropShadowElement.hs b/src/JSDOM/Generated/SVGFEDropShadowElement.hs
--- a/src/JSDOM/Generated/SVGFEDropShadowElement.hs
+++ b/src/JSDOM/Generated/SVGFEDropShadowElement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.setStdDeviation Mozilla SVGFEDropShadowElement.setStdDeviation documentation> 
diff --git a/src/JSDOM/Generated/SVGFEGaussianBlurElement.hs b/src/JSDOM/Generated/SVGFEGaussianBlurElement.hs
--- a/src/JSDOM/Generated/SVGFEGaussianBlurElement.hs
+++ b/src/JSDOM/Generated/SVGFEGaussianBlurElement.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.setStdDeviation Mozilla SVGFEGaussianBlurElement.setStdDeviation documentation> 
diff --git a/src/JSDOM/Generated/SVGFEImageElement.hs b/src/JSDOM/Generated/SVGFEImageElement.hs
--- a/src/JSDOM/Generated/SVGFEImageElement.hs
+++ b/src/JSDOM/Generated/SVGFEImageElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEImageElement.preserveAspectRatio Mozilla SVGFEImageElement.preserveAspectRatio documentation> 
diff --git a/src/JSDOM/Generated/SVGFEMergeNodeElement.hs b/src/JSDOM/Generated/SVGFEMergeNodeElement.hs
--- a/src/JSDOM/Generated/SVGFEMergeNodeElement.hs
+++ b/src/JSDOM/Generated/SVGFEMergeNodeElement.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMergeNodeElement.in1 Mozilla SVGFEMergeNodeElement.in1 documentation> 
diff --git a/src/JSDOM/Generated/SVGFEMorphologyElement.hs b/src/JSDOM/Generated/SVGFEMorphologyElement.hs
--- a/src/JSDOM/Generated/SVGFEMorphologyElement.hs
+++ b/src/JSDOM/Generated/SVGFEMorphologyElement.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.setRadius Mozilla SVGFEMorphologyElement.setRadius documentation> 
diff --git a/src/JSDOM/Generated/SVGFEOffsetElement.hs b/src/JSDOM/Generated/SVGFEOffsetElement.hs
--- a/src/JSDOM/Generated/SVGFEOffsetElement.hs
+++ b/src/JSDOM/Generated/SVGFEOffsetElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.in1 Mozilla SVGFEOffsetElement.in1 documentation> 
diff --git a/src/JSDOM/Generated/SVGFEPointLightElement.hs b/src/JSDOM/Generated/SVGFEPointLightElement.hs
--- a/src/JSDOM/Generated/SVGFEPointLightElement.hs
+++ b/src/JSDOM/Generated/SVGFEPointLightElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.x Mozilla SVGFEPointLightElement.x documentation> 
diff --git a/src/JSDOM/Generated/SVGFESpecularLightingElement.hs b/src/JSDOM/Generated/SVGFESpecularLightingElement.hs
--- a/src/JSDOM/Generated/SVGFESpecularLightingElement.hs
+++ b/src/JSDOM/Generated/SVGFESpecularLightingElement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.in1 Mozilla SVGFESpecularLightingElement.in1 documentation> 
diff --git a/src/JSDOM/Generated/SVGFESpotLightElement.hs b/src/JSDOM/Generated/SVGFESpotLightElement.hs
--- a/src/JSDOM/Generated/SVGFESpotLightElement.hs
+++ b/src/JSDOM/Generated/SVGFESpotLightElement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.x Mozilla SVGFESpotLightElement.x documentation> 
diff --git a/src/JSDOM/Generated/SVGFETileElement.hs b/src/JSDOM/Generated/SVGFETileElement.hs
--- a/src/JSDOM/Generated/SVGFETileElement.hs
+++ b/src/JSDOM/Generated/SVGFETileElement.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETileElement.in1 Mozilla SVGFETileElement.in1 documentation> 
diff --git a/src/JSDOM/Generated/SVGFETurbulenceElement.hs b/src/JSDOM/Generated/SVGFETurbulenceElement.hs
--- a/src/JSDOM/Generated/SVGFETurbulenceElement.hs
+++ b/src/JSDOM/Generated/SVGFETurbulenceElement.hs
@@ -22,7 +22,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern SVG_TURBULENCE_TYPE_UNKNOWN = 0
 pattern SVG_TURBULENCE_TYPE_FRACTALNOISE = 1
diff --git a/src/JSDOM/Generated/SVGFilterElement.hs b/src/JSDOM/Generated/SVGFilterElement.hs
--- a/src/JSDOM/Generated/SVGFilterElement.hs
+++ b/src/JSDOM/Generated/SVGFilterElement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.setFilterRes Mozilla SVGFilterElement.setFilterRes documentation> 
diff --git a/src/JSDOM/Generated/SVGFilterPrimitiveStandardAttributes.hs b/src/JSDOM/Generated/SVGFilterPrimitiveStandardAttributes.hs
--- a/src/JSDOM/Generated/SVGFilterPrimitiveStandardAttributes.hs
+++ b/src/JSDOM/Generated/SVGFilterPrimitiveStandardAttributes.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.x Mozilla SVGFilterPrimitiveStandardAttributes.x documentation> 
diff --git a/src/JSDOM/Generated/SVGFitToViewBox.hs b/src/JSDOM/Generated/SVGFitToViewBox.hs
--- a/src/JSDOM/Generated/SVGFitToViewBox.hs
+++ b/src/JSDOM/Generated/SVGFitToViewBox.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox.viewBox Mozilla SVGFitToViewBox.viewBox documentation> 
diff --git a/src/JSDOM/Generated/SVGForeignObjectElement.hs b/src/JSDOM/Generated/SVGForeignObjectElement.hs
--- a/src/JSDOM/Generated/SVGForeignObjectElement.hs
+++ b/src/JSDOM/Generated/SVGForeignObjectElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.x Mozilla SVGForeignObjectElement.x documentation> 
diff --git a/src/JSDOM/Generated/SVGGlyphRefElement.hs b/src/JSDOM/Generated/SVGGlyphRefElement.hs
--- a/src/JSDOM/Generated/SVGGlyphRefElement.hs
+++ b/src/JSDOM/Generated/SVGGlyphRefElement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.glyphRef Mozilla SVGGlyphRefElement.glyphRef documentation> 
diff --git a/src/JSDOM/Generated/SVGGradientElement.hs b/src/JSDOM/Generated/SVGGradientElement.hs
--- a/src/JSDOM/Generated/SVGGradientElement.hs
+++ b/src/JSDOM/Generated/SVGGradientElement.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern SVG_SPREADMETHOD_UNKNOWN = 0
 pattern SVG_SPREADMETHOD_PAD = 1
diff --git a/src/JSDOM/Generated/SVGGraphicsElement.hs b/src/JSDOM/Generated/SVGGraphicsElement.hs
--- a/src/JSDOM/Generated/SVGGraphicsElement.hs
+++ b/src/JSDOM/Generated/SVGGraphicsElement.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getBBox Mozilla SVGGraphicsElement.getBBox documentation> 
diff --git a/src/JSDOM/Generated/SVGImageElement.hs b/src/JSDOM/Generated/SVGImageElement.hs
--- a/src/JSDOM/Generated/SVGImageElement.hs
+++ b/src/JSDOM/Generated/SVGImageElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.x Mozilla SVGImageElement.x documentation> 
diff --git a/src/JSDOM/Generated/SVGLength.hs b/src/JSDOM/Generated/SVGLength.hs
--- a/src/JSDOM/Generated/SVGLength.hs
+++ b/src/JSDOM/Generated/SVGLength.hs
@@ -24,7 +24,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.newValueSpecifiedUnits Mozilla SVGLength.newValueSpecifiedUnits documentation> 
diff --git a/src/JSDOM/Generated/SVGLengthList.hs b/src/JSDOM/Generated/SVGLengthList.hs
--- a/src/JSDOM/Generated/SVGLengthList.hs
+++ b/src/JSDOM/Generated/SVGLengthList.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.clear Mozilla SVGLengthList.clear documentation> 
diff --git a/src/JSDOM/Generated/SVGLineElement.hs b/src/JSDOM/Generated/SVGLineElement.hs
--- a/src/JSDOM/Generated/SVGLineElement.hs
+++ b/src/JSDOM/Generated/SVGLineElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.x1 Mozilla SVGLineElement.x1 documentation> 
diff --git a/src/JSDOM/Generated/SVGLinearGradientElement.hs b/src/JSDOM/Generated/SVGLinearGradientElement.hs
--- a/src/JSDOM/Generated/SVGLinearGradientElement.hs
+++ b/src/JSDOM/Generated/SVGLinearGradientElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.x1 Mozilla SVGLinearGradientElement.x1 documentation> 
diff --git a/src/JSDOM/Generated/SVGMarkerElement.hs b/src/JSDOM/Generated/SVGMarkerElement.hs
--- a/src/JSDOM/Generated/SVGMarkerElement.hs
+++ b/src/JSDOM/Generated/SVGMarkerElement.hs
@@ -23,7 +23,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.setOrientToAuto Mozilla SVGMarkerElement.setOrientToAuto documentation> 
diff --git a/src/JSDOM/Generated/SVGMaskElement.hs b/src/JSDOM/Generated/SVGMaskElement.hs
--- a/src/JSDOM/Generated/SVGMaskElement.hs
+++ b/src/JSDOM/Generated/SVGMaskElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.maskUnits Mozilla SVGMaskElement.maskUnits documentation> 
diff --git a/src/JSDOM/Generated/SVGMatrix.hs b/src/JSDOM/Generated/SVGMatrix.hs
--- a/src/JSDOM/Generated/SVGMatrix.hs
+++ b/src/JSDOM/Generated/SVGMatrix.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.multiply Mozilla SVGMatrix.multiply documentation> 
diff --git a/src/JSDOM/Generated/SVGNumber.hs b/src/JSDOM/Generated/SVGNumber.hs
--- a/src/JSDOM/Generated/SVGNumber.hs
+++ b/src/JSDOM/Generated/SVGNumber.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumber.value Mozilla SVGNumber.value documentation> 
diff --git a/src/JSDOM/Generated/SVGNumberList.hs b/src/JSDOM/Generated/SVGNumberList.hs
--- a/src/JSDOM/Generated/SVGNumberList.hs
+++ b/src/JSDOM/Generated/SVGNumberList.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.clear Mozilla SVGNumberList.clear documentation> 
diff --git a/src/JSDOM/Generated/SVGPathElement.hs b/src/JSDOM/Generated/SVGPathElement.hs
--- a/src/JSDOM/Generated/SVGPathElement.hs
+++ b/src/JSDOM/Generated/SVGPathElement.hs
@@ -48,7 +48,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getTotalLength Mozilla SVGPathElement.getTotalLength documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSeg.hs b/src/JSDOM/Generated/SVGPathSeg.hs
--- a/src/JSDOM/Generated/SVGPathSeg.hs
+++ b/src/JSDOM/Generated/SVGPathSeg.hs
@@ -32,7 +32,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern PATHSEG_UNKNOWN = 0
 pattern PATHSEG_CLOSEPATH = 1
diff --git a/src/JSDOM/Generated/SVGPathSegArcAbs.hs b/src/JSDOM/Generated/SVGPathSegArcAbs.hs
--- a/src/JSDOM/Generated/SVGPathSegArcAbs.hs
+++ b/src/JSDOM/Generated/SVGPathSegArcAbs.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.x Mozilla SVGPathSegArcAbs.x documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSegArcRel.hs b/src/JSDOM/Generated/SVGPathSegArcRel.hs
--- a/src/JSDOM/Generated/SVGPathSegArcRel.hs
+++ b/src/JSDOM/Generated/SVGPathSegArcRel.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.x Mozilla SVGPathSegArcRel.x documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoCubicAbs.hs b/src/JSDOM/Generated/SVGPathSegCurvetoCubicAbs.hs
--- a/src/JSDOM/Generated/SVGPathSegCurvetoCubicAbs.hs
+++ b/src/JSDOM/Generated/SVGPathSegCurvetoCubicAbs.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x Mozilla SVGPathSegCurvetoCubicAbs.x documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoCubicRel.hs b/src/JSDOM/Generated/SVGPathSegCurvetoCubicRel.hs
--- a/src/JSDOM/Generated/SVGPathSegCurvetoCubicRel.hs
+++ b/src/JSDOM/Generated/SVGPathSegCurvetoCubicRel.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x Mozilla SVGPathSegCurvetoCubicRel.x documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs b/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs
--- a/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs
+++ b/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.x Mozilla SVGPathSegCurvetoCubicSmoothAbs.x documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothRel.hs b/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothRel.hs
--- a/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothRel.hs
+++ b/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothRel.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.x Mozilla SVGPathSegCurvetoCubicSmoothRel.x documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticAbs.hs b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticAbs.hs
--- a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticAbs.hs
+++ b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticAbs.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.x Mozilla SVGPathSegCurvetoQuadraticAbs.x documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticRel.hs b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticRel.hs
--- a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticRel.hs
+++ b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticRel.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.x Mozilla SVGPathSegCurvetoQuadraticRel.x documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs
--- a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs
+++ b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs.x Mozilla SVGPathSegCurvetoQuadraticSmoothAbs.x documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs
--- a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs
+++ b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel.x Mozilla SVGPathSegCurvetoQuadraticSmoothRel.x documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSegLinetoAbs.hs b/src/JSDOM/Generated/SVGPathSegLinetoAbs.hs
--- a/src/JSDOM/Generated/SVGPathSegLinetoAbs.hs
+++ b/src/JSDOM/Generated/SVGPathSegLinetoAbs.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs.x Mozilla SVGPathSegLinetoAbs.x documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSegLinetoHorizontalAbs.hs b/src/JSDOM/Generated/SVGPathSegLinetoHorizontalAbs.hs
--- a/src/JSDOM/Generated/SVGPathSegLinetoHorizontalAbs.hs
+++ b/src/JSDOM/Generated/SVGPathSegLinetoHorizontalAbs.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalAbs.x Mozilla SVGPathSegLinetoHorizontalAbs.x documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSegLinetoHorizontalRel.hs b/src/JSDOM/Generated/SVGPathSegLinetoHorizontalRel.hs
--- a/src/JSDOM/Generated/SVGPathSegLinetoHorizontalRel.hs
+++ b/src/JSDOM/Generated/SVGPathSegLinetoHorizontalRel.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalRel.x Mozilla SVGPathSegLinetoHorizontalRel.x documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSegLinetoRel.hs b/src/JSDOM/Generated/SVGPathSegLinetoRel.hs
--- a/src/JSDOM/Generated/SVGPathSegLinetoRel.hs
+++ b/src/JSDOM/Generated/SVGPathSegLinetoRel.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel.x Mozilla SVGPathSegLinetoRel.x documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSegLinetoVerticalAbs.hs b/src/JSDOM/Generated/SVGPathSegLinetoVerticalAbs.hs
--- a/src/JSDOM/Generated/SVGPathSegLinetoVerticalAbs.hs
+++ b/src/JSDOM/Generated/SVGPathSegLinetoVerticalAbs.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalAbs.y Mozilla SVGPathSegLinetoVerticalAbs.y documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSegLinetoVerticalRel.hs b/src/JSDOM/Generated/SVGPathSegLinetoVerticalRel.hs
--- a/src/JSDOM/Generated/SVGPathSegLinetoVerticalRel.hs
+++ b/src/JSDOM/Generated/SVGPathSegLinetoVerticalRel.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalRel.y Mozilla SVGPathSegLinetoVerticalRel.y documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSegList.hs b/src/JSDOM/Generated/SVGPathSegList.hs
--- a/src/JSDOM/Generated/SVGPathSegList.hs
+++ b/src/JSDOM/Generated/SVGPathSegList.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.clear Mozilla SVGPathSegList.clear documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSegMovetoAbs.hs b/src/JSDOM/Generated/SVGPathSegMovetoAbs.hs
--- a/src/JSDOM/Generated/SVGPathSegMovetoAbs.hs
+++ b/src/JSDOM/Generated/SVGPathSegMovetoAbs.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs.x Mozilla SVGPathSegMovetoAbs.x documentation> 
diff --git a/src/JSDOM/Generated/SVGPathSegMovetoRel.hs b/src/JSDOM/Generated/SVGPathSegMovetoRel.hs
--- a/src/JSDOM/Generated/SVGPathSegMovetoRel.hs
+++ b/src/JSDOM/Generated/SVGPathSegMovetoRel.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel.x Mozilla SVGPathSegMovetoRel.x documentation> 
diff --git a/src/JSDOM/Generated/SVGPatternElement.hs b/src/JSDOM/Generated/SVGPatternElement.hs
--- a/src/JSDOM/Generated/SVGPatternElement.hs
+++ b/src/JSDOM/Generated/SVGPatternElement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternUnits Mozilla SVGPatternElement.patternUnits documentation> 
diff --git a/src/JSDOM/Generated/SVGPoint.hs b/src/JSDOM/Generated/SVGPoint.hs
--- a/src/JSDOM/Generated/SVGPoint.hs
+++ b/src/JSDOM/Generated/SVGPoint.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.matrixTransform Mozilla SVGPoint.matrixTransform documentation> 
diff --git a/src/JSDOM/Generated/SVGPointList.hs b/src/JSDOM/Generated/SVGPointList.hs
--- a/src/JSDOM/Generated/SVGPointList.hs
+++ b/src/JSDOM/Generated/SVGPointList.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.clear Mozilla SVGPointList.clear documentation> 
diff --git a/src/JSDOM/Generated/SVGPolygonElement.hs b/src/JSDOM/Generated/SVGPolygonElement.hs
--- a/src/JSDOM/Generated/SVGPolygonElement.hs
+++ b/src/JSDOM/Generated/SVGPolygonElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement.points Mozilla SVGPolygonElement.points documentation> 
diff --git a/src/JSDOM/Generated/SVGPolylineElement.hs b/src/JSDOM/Generated/SVGPolylineElement.hs
--- a/src/JSDOM/Generated/SVGPolylineElement.hs
+++ b/src/JSDOM/Generated/SVGPolylineElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement.points Mozilla SVGPolylineElement.points documentation> 
diff --git a/src/JSDOM/Generated/SVGPreserveAspectRatio.hs b/src/JSDOM/Generated/SVGPreserveAspectRatio.hs
--- a/src/JSDOM/Generated/SVGPreserveAspectRatio.hs
+++ b/src/JSDOM/Generated/SVGPreserveAspectRatio.hs
@@ -30,7 +30,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern SVG_PRESERVEASPECTRATIO_UNKNOWN = 0
 pattern SVG_PRESERVEASPECTRATIO_NONE = 1
diff --git a/src/JSDOM/Generated/SVGRadialGradientElement.hs b/src/JSDOM/Generated/SVGRadialGradientElement.hs
--- a/src/JSDOM/Generated/SVGRadialGradientElement.hs
+++ b/src/JSDOM/Generated/SVGRadialGradientElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.cx Mozilla SVGRadialGradientElement.cx documentation> 
diff --git a/src/JSDOM/Generated/SVGRect.hs b/src/JSDOM/Generated/SVGRect.hs
--- a/src/JSDOM/Generated/SVGRect.hs
+++ b/src/JSDOM/Generated/SVGRect.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.x Mozilla SVGRect.x documentation> 
diff --git a/src/JSDOM/Generated/SVGRectElement.hs b/src/JSDOM/Generated/SVGRectElement.hs
--- a/src/JSDOM/Generated/SVGRectElement.hs
+++ b/src/JSDOM/Generated/SVGRectElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.x Mozilla SVGRectElement.x documentation> 
diff --git a/src/JSDOM/Generated/SVGRenderingIntent.hs b/src/JSDOM/Generated/SVGRenderingIntent.hs
--- a/src/JSDOM/Generated/SVGRenderingIntent.hs
+++ b/src/JSDOM/Generated/SVGRenderingIntent.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern RENDERING_INTENT_UNKNOWN = 0
 pattern RENDERING_INTENT_AUTO = 1
diff --git a/src/JSDOM/Generated/SVGSVGElement.hs b/src/JSDOM/Generated/SVGSVGElement.hs
--- a/src/JSDOM/Generated/SVGSVGElement.hs
+++ b/src/JSDOM/Generated/SVGSVGElement.hs
@@ -34,7 +34,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.suspendRedraw Mozilla SVGSVGElement.suspendRedraw documentation> 
diff --git a/src/JSDOM/Generated/SVGScriptElement.hs b/src/JSDOM/Generated/SVGScriptElement.hs
--- a/src/JSDOM/Generated/SVGScriptElement.hs
+++ b/src/JSDOM/Generated/SVGScriptElement.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGScriptElement.type Mozilla SVGScriptElement.type documentation> 
diff --git a/src/JSDOM/Generated/SVGStopElement.hs b/src/JSDOM/Generated/SVGStopElement.hs
--- a/src/JSDOM/Generated/SVGStopElement.hs
+++ b/src/JSDOM/Generated/SVGStopElement.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStopElement.offset Mozilla SVGStopElement.offset documentation> 
diff --git a/src/JSDOM/Generated/SVGStringList.hs b/src/JSDOM/Generated/SVGStringList.hs
--- a/src/JSDOM/Generated/SVGStringList.hs
+++ b/src/JSDOM/Generated/SVGStringList.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.clear Mozilla SVGStringList.clear documentation> 
diff --git a/src/JSDOM/Generated/SVGStyleElement.hs b/src/JSDOM/Generated/SVGStyleElement.hs
--- a/src/JSDOM/Generated/SVGStyleElement.hs
+++ b/src/JSDOM/Generated/SVGStyleElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.disabled Mozilla SVGStyleElement.disabled documentation> 
diff --git a/src/JSDOM/Generated/SVGTests.hs b/src/JSDOM/Generated/SVGTests.hs
--- a/src/JSDOM/Generated/SVGTests.hs
+++ b/src/JSDOM/Generated/SVGTests.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.hasExtension Mozilla SVGTests.hasExtension documentation> 
diff --git a/src/JSDOM/Generated/SVGTextContentElement.hs b/src/JSDOM/Generated/SVGTextContentElement.hs
--- a/src/JSDOM/Generated/SVGTextContentElement.hs
+++ b/src/JSDOM/Generated/SVGTextContentElement.hs
@@ -26,7 +26,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getNumberOfChars Mozilla SVGTextContentElement.getNumberOfChars documentation> 
diff --git a/src/JSDOM/Generated/SVGTextPathElement.hs b/src/JSDOM/Generated/SVGTextPathElement.hs
--- a/src/JSDOM/Generated/SVGTextPathElement.hs
+++ b/src/JSDOM/Generated/SVGTextPathElement.hs
@@ -22,7 +22,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern TEXTPATH_METHODTYPE_UNKNOWN = 0
 pattern TEXTPATH_METHODTYPE_ALIGN = 1
diff --git a/src/JSDOM/Generated/SVGTextPositioningElement.hs b/src/JSDOM/Generated/SVGTextPositioningElement.hs
--- a/src/JSDOM/Generated/SVGTextPositioningElement.hs
+++ b/src/JSDOM/Generated/SVGTextPositioningElement.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.x Mozilla SVGTextPositioningElement.x documentation> 
diff --git a/src/JSDOM/Generated/SVGTransform.hs b/src/JSDOM/Generated/SVGTransform.hs
--- a/src/JSDOM/Generated/SVGTransform.hs
+++ b/src/JSDOM/Generated/SVGTransform.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setMatrix Mozilla SVGTransform.setMatrix documentation> 
diff --git a/src/JSDOM/Generated/SVGTransformList.hs b/src/JSDOM/Generated/SVGTransformList.hs
--- a/src/JSDOM/Generated/SVGTransformList.hs
+++ b/src/JSDOM/Generated/SVGTransformList.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.clear Mozilla SVGTransformList.clear documentation> 
diff --git a/src/JSDOM/Generated/SVGURIReference.hs b/src/JSDOM/Generated/SVGURIReference.hs
--- a/src/JSDOM/Generated/SVGURIReference.hs
+++ b/src/JSDOM/Generated/SVGURIReference.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGURIReference.href Mozilla SVGURIReference.href documentation> 
diff --git a/src/JSDOM/Generated/SVGUnitTypes.hs b/src/JSDOM/Generated/SVGUnitTypes.hs
--- a/src/JSDOM/Generated/SVGUnitTypes.hs
+++ b/src/JSDOM/Generated/SVGUnitTypes.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern SVG_UNIT_TYPE_UNKNOWN = 0
 pattern SVG_UNIT_TYPE_USERSPACEONUSE = 1
diff --git a/src/JSDOM/Generated/SVGUseElement.hs b/src/JSDOM/Generated/SVGUseElement.hs
--- a/src/JSDOM/Generated/SVGUseElement.hs
+++ b/src/JSDOM/Generated/SVGUseElement.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.x Mozilla SVGUseElement.x documentation> 
diff --git a/src/JSDOM/Generated/SVGViewElement.hs b/src/JSDOM/Generated/SVGViewElement.hs
--- a/src/JSDOM/Generated/SVGViewElement.hs
+++ b/src/JSDOM/Generated/SVGViewElement.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewElement.viewTarget Mozilla SVGViewElement.viewTarget documentation> 
diff --git a/src/JSDOM/Generated/SVGViewSpec.hs b/src/JSDOM/Generated/SVGViewSpec.hs
--- a/src/JSDOM/Generated/SVGViewSpec.hs
+++ b/src/JSDOM/Generated/SVGViewSpec.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.transform Mozilla SVGViewSpec.transform documentation> 
diff --git a/src/JSDOM/Generated/SVGZoomAndPan.hs b/src/JSDOM/Generated/SVGZoomAndPan.hs
--- a/src/JSDOM/Generated/SVGZoomAndPan.hs
+++ b/src/JSDOM/Generated/SVGZoomAndPan.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern SVG_ZOOMANDPAN_UNKNOWN = 0
 pattern SVG_ZOOMANDPAN_DISABLE = 1
diff --git a/src/JSDOM/Generated/SVGZoomEvent.hs b/src/JSDOM/Generated/SVGZoomEvent.hs
--- a/src/JSDOM/Generated/SVGZoomEvent.hs
+++ b/src/JSDOM/Generated/SVGZoomEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.zoomRectScreen Mozilla SVGZoomEvent.zoomRectScreen documentation> 
diff --git a/src/JSDOM/Generated/Screen.hs b/src/JSDOM/Generated/Screen.hs
--- a/src/JSDOM/Generated/Screen.hs
+++ b/src/JSDOM/Generated/Screen.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.height Mozilla Screen.height documentation> 
diff --git a/src/JSDOM/Generated/ScriptProcessorNode.hs b/src/JSDOM/Generated/ScriptProcessorNode.hs
--- a/src/JSDOM/Generated/ScriptProcessorNode.hs
+++ b/src/JSDOM/Generated/ScriptProcessorNode.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode.onaudioprocess Mozilla ScriptProcessorNode.onaudioprocess documentation> 
diff --git a/src/JSDOM/Generated/SecurityPolicyViolationEvent.hs b/src/JSDOM/Generated/SecurityPolicyViolationEvent.hs
--- a/src/JSDOM/Generated/SecurityPolicyViolationEvent.hs
+++ b/src/JSDOM/Generated/SecurityPolicyViolationEvent.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent Mozilla SecurityPolicyViolationEvent documentation> 
diff --git a/src/JSDOM/Generated/Selection.hs b/src/JSDOM/Generated/Selection.hs
--- a/src/JSDOM/Generated/Selection.hs
+++ b/src/JSDOM/Generated/Selection.hs
@@ -26,7 +26,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.collapse Mozilla Selection.collapse documentation> 
diff --git a/src/JSDOM/Generated/ShadowRoot.hs b/src/JSDOM/Generated/ShadowRoot.hs
--- a/src/JSDOM/Generated/ShadowRoot.hs
+++ b/src/JSDOM/Generated/ShadowRoot.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot.mode Mozilla ShadowRoot.mode documentation> 
diff --git a/src/JSDOM/Generated/SiteBoundCredential.hs b/src/JSDOM/Generated/SiteBoundCredential.hs
--- a/src/JSDOM/Generated/SiteBoundCredential.hs
+++ b/src/JSDOM/Generated/SiteBoundCredential.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SiteBoundCredential.name Mozilla SiteBoundCredential.name documentation> 
diff --git a/src/JSDOM/Generated/Slotable.hs b/src/JSDOM/Generated/Slotable.hs
--- a/src/JSDOM/Generated/Slotable.hs
+++ b/src/JSDOM/Generated/Slotable.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Slotable.assignedSlot Mozilla Slotable.assignedSlot documentation> 
diff --git a/src/JSDOM/Generated/SourceBuffer.hs b/src/JSDOM/Generated/SourceBuffer.hs
--- a/src/JSDOM/Generated/SourceBuffer.hs
+++ b/src/JSDOM/Generated/SourceBuffer.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendBuffer Mozilla SourceBuffer.appendBuffer documentation> 
@@ -119,8 +119,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/JSDOM/Generated/SourceBufferList.hs b/src/JSDOM/Generated/SourceBufferList.hs
--- a/src/JSDOM/Generated/SourceBufferList.hs
+++ b/src/JSDOM/Generated/SourceBufferList.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.item Mozilla SourceBufferList.item documentation> 
diff --git a/src/JSDOM/Generated/SpeechSynthesis.hs b/src/JSDOM/Generated/SpeechSynthesis.hs
--- a/src/JSDOM/Generated/SpeechSynthesis.hs
+++ b/src/JSDOM/Generated/SpeechSynthesis.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.speak Mozilla SpeechSynthesis.speak documentation> 
diff --git a/src/JSDOM/Generated/SpeechSynthesisEvent.hs b/src/JSDOM/Generated/SpeechSynthesisEvent.hs
--- a/src/JSDOM/Generated/SpeechSynthesisEvent.hs
+++ b/src/JSDOM/Generated/SpeechSynthesisEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent.charIndex Mozilla SpeechSynthesisEvent.charIndex documentation> 
diff --git a/src/JSDOM/Generated/SpeechSynthesisUtterance.hs b/src/JSDOM/Generated/SpeechSynthesisUtterance.hs
--- a/src/JSDOM/Generated/SpeechSynthesisUtterance.hs
+++ b/src/JSDOM/Generated/SpeechSynthesisUtterance.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance Mozilla SpeechSynthesisUtterance documentation> 
@@ -123,7 +123,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/JSDOM/Generated/SpeechSynthesisVoice.hs b/src/JSDOM/Generated/SpeechSynthesisVoice.hs
--- a/src/JSDOM/Generated/SpeechSynthesisVoice.hs
+++ b/src/JSDOM/Generated/SpeechSynthesisVoice.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.voiceURI Mozilla SpeechSynthesisVoice.voiceURI documentation> 
diff --git a/src/JSDOM/Generated/StaticRange.hs b/src/JSDOM/Generated/StaticRange.hs
--- a/src/JSDOM/Generated/StaticRange.hs
+++ b/src/JSDOM/Generated/StaticRange.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StaticRange.startOffset Mozilla StaticRange.startOffset documentation> 
diff --git a/src/JSDOM/Generated/Storage.hs b/src/JSDOM/Generated/Storage.hs
--- a/src/JSDOM/Generated/Storage.hs
+++ b/src/JSDOM/Generated/Storage.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
@@ -26,7 +26,8 @@
     (MonadDOM m, FromJSString result) =>
       Storage -> Word -> m (Maybe result)
 key self index
-  = liftDOM ((self ^. jsf "key" [toJSVal index]) >>= fromJSVal)
+  = liftDOM
+      ((self ^. jsf "key" [toJSVal index]) >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
 key_ :: (MonadDOM m) => Storage -> Word -> m ()
@@ -39,7 +40,7 @@
             Storage -> Word -> m result
 keyUnsafe self index
   = liftDOM
-      (((self ^. jsf "key" [toJSVal index]) >>= fromJSVal) >>=
+      (((self ^. jsf "key" [toJSVal index]) >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
@@ -53,7 +54,7 @@
 getItem ::
         (MonadDOM m, ToJSString key, FromJSString result) =>
           Storage -> key -> m (Maybe result)
-getItem self key = liftDOM ((self ! key) >>= fromJSVal)
+getItem self key = liftDOM ((self ! key) >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.getItem Mozilla Storage.getItem documentation> 
 getItem_ :: (MonadDOM m, ToJSString key) => Storage -> key -> m ()
@@ -65,7 +66,7 @@
                 Storage -> key -> m result
 getItemUnsafe self key
   = liftDOM
-      (((self ! key) >>= fromJSVal) >>=
+      (((self ! key) >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.getItem Mozilla Storage.getItem documentation> 
diff --git a/src/JSDOM/Generated/StorageErrorCallback.hs b/src/JSDOM/Generated/StorageErrorCallback.hs
--- a/src/JSDOM/Generated/StorageErrorCallback.hs
+++ b/src/JSDOM/Generated/StorageErrorCallback.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageErrorCallback Mozilla StorageErrorCallback documentation> 
diff --git a/src/JSDOM/Generated/StorageEvent.hs b/src/JSDOM/Generated/StorageEvent.hs
--- a/src/JSDOM/Generated/StorageEvent.hs
+++ b/src/JSDOM/Generated/StorageEvent.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent Mozilla StorageEvent documentation> 
@@ -57,7 +57,7 @@
 getKey ::
        (MonadDOM m, FromJSString result) =>
          StorageEvent -> m (Maybe result)
-getKey self = liftDOM ((self ^. js "key") >>= fromJSVal)
+getKey self = liftDOM ((self ^. js "key") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.key Mozilla StorageEvent.key documentation> 
 getKeyUnsafe ::
@@ -65,7 +65,7 @@
                StorageEvent -> m result
 getKeyUnsafe self
   = liftDOM
-      (((self ^. js "key") >>= fromJSVal) >>=
+      (((self ^. js "key") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.key Mozilla StorageEvent.key documentation> 
@@ -78,7 +78,8 @@
 getOldValue ::
             (MonadDOM m, FromJSString result) =>
               StorageEvent -> m (Maybe result)
-getOldValue self = liftDOM ((self ^. js "oldValue") >>= fromJSVal)
+getOldValue self
+  = liftDOM ((self ^. js "oldValue") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.oldValue Mozilla StorageEvent.oldValue documentation> 
 getOldValueUnsafe ::
@@ -86,7 +87,7 @@
                     StorageEvent -> m result
 getOldValueUnsafe self
   = liftDOM
-      (((self ^. js "oldValue") >>= fromJSVal) >>=
+      (((self ^. js "oldValue") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.oldValue Mozilla StorageEvent.oldValue documentation> 
@@ -99,7 +100,8 @@
 getNewValue ::
             (MonadDOM m, FromJSString result) =>
               StorageEvent -> m (Maybe result)
-getNewValue self = liftDOM ((self ^. js "newValue") >>= fromJSVal)
+getNewValue self
+  = liftDOM ((self ^. js "newValue") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.newValue Mozilla StorageEvent.newValue documentation> 
 getNewValueUnsafe ::
@@ -107,7 +109,7 @@
                     StorageEvent -> m result
 getNewValueUnsafe self
   = liftDOM
-      (((self ^. js "newValue") >>= fromJSVal) >>=
+      (((self ^. js "newValue") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.newValue Mozilla StorageEvent.newValue documentation> 
diff --git a/src/JSDOM/Generated/StorageInfo.hs b/src/JSDOM/Generated/StorageInfo.hs
--- a/src/JSDOM/Generated/StorageInfo.hs
+++ b/src/JSDOM/Generated/StorageInfo.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageInfo.queryUsageAndQuota Mozilla StorageInfo.queryUsageAndQuota documentation> 
diff --git a/src/JSDOM/Generated/StorageQuota.hs b/src/JSDOM/Generated/StorageQuota.hs
--- a/src/JSDOM/Generated/StorageQuota.hs
+++ b/src/JSDOM/Generated/StorageQuota.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuota.queryUsageAndQuota Mozilla StorageQuota.queryUsageAndQuota documentation> 
diff --git a/src/JSDOM/Generated/StorageQuotaCallback.hs b/src/JSDOM/Generated/StorageQuotaCallback.hs
--- a/src/JSDOM/Generated/StorageQuotaCallback.hs
+++ b/src/JSDOM/Generated/StorageQuotaCallback.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuotaCallback Mozilla StorageQuotaCallback documentation> 
diff --git a/src/JSDOM/Generated/StorageUsageCallback.hs b/src/JSDOM/Generated/StorageUsageCallback.hs
--- a/src/JSDOM/Generated/StorageUsageCallback.hs
+++ b/src/JSDOM/Generated/StorageUsageCallback.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageUsageCallback Mozilla StorageUsageCallback documentation> 
diff --git a/src/JSDOM/Generated/StringCallback.hs b/src/JSDOM/Generated/StringCallback.hs
--- a/src/JSDOM/Generated/StringCallback.hs
+++ b/src/JSDOM/Generated/StringCallback.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StringCallback Mozilla StringCallback documentation> 
diff --git a/src/JSDOM/Generated/StyleMedia.hs b/src/JSDOM/Generated/StyleMedia.hs
--- a/src/JSDOM/Generated/StyleMedia.hs
+++ b/src/JSDOM/Generated/StyleMedia.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia.matchMedium Mozilla StyleMedia.matchMedium documentation> 
diff --git a/src/JSDOM/Generated/StyleSheet.hs b/src/JSDOM/Generated/StyleSheet.hs
--- a/src/JSDOM/Generated/StyleSheet.hs
+++ b/src/JSDOM/Generated/StyleSheet.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.type Mozilla StyleSheet.type documentation> 
@@ -28,7 +28,8 @@
         (MonadDOM m, IsStyleSheet self, FromJSString result) =>
           self -> m (Maybe result)
 getType self
-  = liftDOM (((toStyleSheet self) ^. js "type") >>= fromJSVal)
+  = liftDOM
+      (((toStyleSheet self) ^. js "type") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.type Mozilla StyleSheet.type documentation> 
 getTypeUnsafe ::
@@ -37,7 +38,7 @@
                 self -> m result
 getTypeUnsafe self
   = liftDOM
-      ((((toStyleSheet self) ^. js "type") >>= fromJSVal) >>=
+      ((((toStyleSheet self) ^. js "type") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.type Mozilla StyleSheet.type documentation> 
@@ -78,7 +79,8 @@
         (MonadDOM m, IsStyleSheet self, FromJSString result) =>
           self -> m (Maybe result)
 getHref self
-  = liftDOM (((toStyleSheet self) ^. js "href") >>= fromJSVal)
+  = liftDOM
+      (((toStyleSheet self) ^. js "href") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.href Mozilla StyleSheet.href documentation> 
 getHrefUnsafe ::
@@ -87,7 +89,7 @@
                 self -> m result
 getHrefUnsafe self
   = liftDOM
-      ((((toStyleSheet self) ^. js "href") >>= fromJSVal) >>=
+      ((((toStyleSheet self) ^. js "href") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.href Mozilla StyleSheet.href documentation> 
@@ -103,7 +105,8 @@
          (MonadDOM m, IsStyleSheet self, FromJSString result) =>
            self -> m (Maybe result)
 getTitle self
-  = liftDOM (((toStyleSheet self) ^. js "title") >>= fromJSVal)
+  = liftDOM
+      (((toStyleSheet self) ^. js "title") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.title Mozilla StyleSheet.title documentation> 
 getTitleUnsafe ::
@@ -112,7 +115,7 @@
                  self -> m result
 getTitleUnsafe self
   = liftDOM
-      ((((toStyleSheet self) ^. js "title") >>= fromJSVal) >>=
+      ((((toStyleSheet self) ^. js "title") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.title Mozilla StyleSheet.title documentation> 
diff --git a/src/JSDOM/Generated/StyleSheetList.hs b/src/JSDOM/Generated/StyleSheetList.hs
--- a/src/JSDOM/Generated/StyleSheetList.hs
+++ b/src/JSDOM/Generated/StyleSheetList.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
diff --git a/src/JSDOM/Generated/SubtleCrypto.hs b/src/JSDOM/Generated/SubtleCrypto.hs
--- a/src/JSDOM/Generated/SubtleCrypto.hs
+++ b/src/JSDOM/Generated/SubtleCrypto.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
diff --git a/src/JSDOM/Generated/Text.hs b/src/JSDOM/Generated/Text.hs
--- a/src/JSDOM/Generated/Text.hs
+++ b/src/JSDOM/Generated/Text.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Text Mozilla Text documentation> 
diff --git a/src/JSDOM/Generated/TextDecoder.hs b/src/JSDOM/Generated/TextDecoder.hs
--- a/src/JSDOM/Generated/TextDecoder.hs
+++ b/src/JSDOM/Generated/TextDecoder.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder Mozilla TextDecoder documentation> 
diff --git a/src/JSDOM/Generated/TextEncoder.hs b/src/JSDOM/Generated/TextEncoder.hs
--- a/src/JSDOM/Generated/TextEncoder.hs
+++ b/src/JSDOM/Generated/TextEncoder.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder Mozilla TextEncoder documentation> 
diff --git a/src/JSDOM/Generated/TextEvent.hs b/src/JSDOM/Generated/TextEvent.hs
--- a/src/JSDOM/Generated/TextEvent.hs
+++ b/src/JSDOM/Generated/TextEvent.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEvent.initTextEvent Mozilla TextEvent.initTextEvent documentation> 
diff --git a/src/JSDOM/Generated/TextMetrics.hs b/src/JSDOM/Generated/TextMetrics.hs
--- a/src/JSDOM/Generated/TextMetrics.hs
+++ b/src/JSDOM/Generated/TextMetrics.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics.width Mozilla TextMetrics.width documentation> 
diff --git a/src/JSDOM/Generated/TextTrack.hs b/src/JSDOM/Generated/TextTrack.hs
--- a/src/JSDOM/Generated/TextTrack.hs
+++ b/src/JSDOM/Generated/TextTrack.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.addCue Mozilla TextTrack.addCue documentation> 
diff --git a/src/JSDOM/Generated/TextTrackCue.hs b/src/JSDOM/Generated/TextTrackCue.hs
--- a/src/JSDOM/Generated/TextTrackCue.hs
+++ b/src/JSDOM/Generated/TextTrackCue.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.track Mozilla TextTrackCue.track documentation> 
diff --git a/src/JSDOM/Generated/TextTrackCueList.hs b/src/JSDOM/Generated/TextTrackCueList.hs
--- a/src/JSDOM/Generated/TextTrackCueList.hs
+++ b/src/JSDOM/Generated/TextTrackCueList.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.item Mozilla TextTrackCueList.item documentation> 
diff --git a/src/JSDOM/Generated/TextTrackList.hs b/src/JSDOM/Generated/TextTrackList.hs
--- a/src/JSDOM/Generated/TextTrackList.hs
+++ b/src/JSDOM/Generated/TextTrackList.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.item Mozilla TextTrackList.item documentation> 
diff --git a/src/JSDOM/Generated/TimeRanges.hs b/src/JSDOM/Generated/TimeRanges.hs
--- a/src/JSDOM/Generated/TimeRanges.hs
+++ b/src/JSDOM/Generated/TimeRanges.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.start Mozilla TimeRanges.start documentation> 
diff --git a/src/JSDOM/Generated/Touch.hs b/src/JSDOM/Generated/Touch.hs
--- a/src/JSDOM/Generated/Touch.hs
+++ b/src/JSDOM/Generated/Touch.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.clientX Mozilla Touch.clientX documentation> 
diff --git a/src/JSDOM/Generated/TouchEvent.hs b/src/JSDOM/Generated/TouchEvent.hs
--- a/src/JSDOM/Generated/TouchEvent.hs
+++ b/src/JSDOM/Generated/TouchEvent.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent Mozilla TouchEvent documentation> 
diff --git a/src/JSDOM/Generated/TouchList.hs b/src/JSDOM/Generated/TouchList.hs
--- a/src/JSDOM/Generated/TouchList.hs
+++ b/src/JSDOM/Generated/TouchList.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchList.item Mozilla TouchList.item documentation> 
diff --git a/src/JSDOM/Generated/TrackEvent.hs b/src/JSDOM/Generated/TrackEvent.hs
--- a/src/JSDOM/Generated/TrackEvent.hs
+++ b/src/JSDOM/Generated/TrackEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent Mozilla TrackEvent documentation> 
diff --git a/src/JSDOM/Generated/TransitionEvent.hs b/src/JSDOM/Generated/TransitionEvent.hs
--- a/src/JSDOM/Generated/TransitionEvent.hs
+++ b/src/JSDOM/Generated/TransitionEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent Mozilla TransitionEvent documentation> 
diff --git a/src/JSDOM/Generated/TreeWalker.hs b/src/JSDOM/Generated/TreeWalker.hs
--- a/src/JSDOM/Generated/TreeWalker.hs
+++ b/src/JSDOM/Generated/TreeWalker.hs
@@ -25,7 +25,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.parentNode Mozilla TreeWalker.parentNode documentation> 
diff --git a/src/JSDOM/Generated/URL.hs b/src/JSDOM/Generated/URL.hs
--- a/src/JSDOM/Generated/URL.hs
+++ b/src/JSDOM/Generated/URL.hs
@@ -22,7 +22,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation> 
@@ -52,38 +52,37 @@
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
 createObjectURL ::
-                (MonadDOM m, IsBlob blob, FromJSString result) =>
-                  URL -> blob -> m result
-createObjectURL self blob
+                (MonadDOM m, IsBlob blob, FromJSString result) => blob -> m result
+createObjectURL blob
   = liftDOM
-      ((self ^. jsf "createObjectURL" [toJSVal blob]) >>=
+      (((jsg "URL") ^. jsf "createObjectURL" [toJSVal blob]) >>=
          fromJSValUnchecked)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
-createObjectURL_ ::
-                 (MonadDOM m, IsBlob blob) => URL -> blob -> m ()
-createObjectURL_ self blob
-  = liftDOM (void (self ^. jsf "createObjectURL" [toJSVal blob]))
+createObjectURL_ :: (MonadDOM m, IsBlob blob) => blob -> m ()
+createObjectURL_ blob
+  = liftDOM
+      (void ((jsg "URL") ^. jsf "createObjectURL" [toJSVal blob]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.revokeObjectURL Mozilla URL.revokeObjectURL documentation> 
-revokeObjectURL ::
-                (MonadDOM m, ToJSString url) => URL -> url -> m ()
-revokeObjectURL self url
-  = liftDOM (void (self ^. jsf "revokeObjectURL" [toJSVal url]))
+revokeObjectURL :: (MonadDOM m, ToJSString url) => url -> m ()
+revokeObjectURL url
+  = liftDOM
+      (void ((jsg "URL") ^. jsf "revokeObjectURL" [toJSVal url]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
 createObjectURLSource ::
-                      (MonadDOM m, FromJSString result) => URL -> MediaSource -> m result
-createObjectURLSource self source
+                      (MonadDOM m, FromJSString result) => MediaSource -> m result
+createObjectURLSource source
   = liftDOM
-      ((self ^. jsf "createObjectURL" [toJSVal source]) >>=
+      (((jsg "URL") ^. jsf "createObjectURL" [toJSVal source]) >>=
          fromJSValUnchecked)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
-createObjectURLSource_ ::
-                       (MonadDOM m) => URL -> MediaSource -> m ()
-createObjectURLSource_ self source
-  = liftDOM (void (self ^. jsf "createObjectURL" [toJSVal source]))
+createObjectURLSource_ :: (MonadDOM m) => MediaSource -> m ()
+createObjectURLSource_ source
+  = liftDOM
+      (void ((jsg "URL") ^. jsf "createObjectURL" [toJSVal source]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.href Mozilla URL.href documentation> 
 setHref :: (MonadDOM m, ToJSString val) => URL -> val -> m ()
diff --git a/src/JSDOM/Generated/URLSearchParams.hs b/src/JSDOM/Generated/URLSearchParams.hs
--- a/src/JSDOM/Generated/URLSearchParams.hs
+++ b/src/JSDOM/Generated/URLSearchParams.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams Mozilla URLSearchParams documentation> 
@@ -48,7 +48,8 @@
     (MonadDOM m, ToJSString name, FromJSString result) =>
       URLSearchParams -> name -> m (Maybe result)
 get self name
-  = liftDOM ((self ^. jsf "get" [toJSVal name]) >>= fromJSVal)
+  = liftDOM
+      ((self ^. jsf "get" [toJSVal name]) >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.get Mozilla URLSearchParams.get documentation> 
 get_ ::
@@ -61,7 +62,7 @@
             URLSearchParams -> name -> m result
 getUnsafe self name
   = liftDOM
-      (((self ^. jsf "get" [toJSVal name]) >>= fromJSVal) >>=
+      (((self ^. jsf "get" [toJSVal name]) >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.get Mozilla URLSearchParams.get documentation> 
diff --git a/src/JSDOM/Generated/UserMessageHandler.hs b/src/JSDOM/Generated/UserMessageHandler.hs
--- a/src/JSDOM/Generated/UserMessageHandler.hs
+++ b/src/JSDOM/Generated/UserMessageHandler.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/UserMessageHandler.postMessage Mozilla UserMessageHandler.postMessage documentation> 
diff --git a/src/JSDOM/Generated/VTTCue.hs b/src/JSDOM/Generated/VTTCue.hs
--- a/src/JSDOM/Generated/VTTCue.hs
+++ b/src/JSDOM/Generated/VTTCue.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue Mozilla VTTCue documentation> 
diff --git a/src/JSDOM/Generated/VTTRegion.hs b/src/JSDOM/Generated/VTTRegion.hs
--- a/src/JSDOM/Generated/VTTRegion.hs
+++ b/src/JSDOM/Generated/VTTRegion.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion Mozilla VTTRegion documentation> 
diff --git a/src/JSDOM/Generated/VTTRegionList.hs b/src/JSDOM/Generated/VTTRegionList.hs
--- a/src/JSDOM/Generated/VTTRegionList.hs
+++ b/src/JSDOM/Generated/VTTRegionList.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.item Mozilla VTTRegionList.item documentation> 
diff --git a/src/JSDOM/Generated/ValidityState.hs b/src/JSDOM/Generated/ValidityState.hs
--- a/src/JSDOM/Generated/ValidityState.hs
+++ b/src/JSDOM/Generated/ValidityState.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.valueMissing Mozilla ValidityState.valueMissing documentation> 
diff --git a/src/JSDOM/Generated/VideoPlaybackQuality.hs b/src/JSDOM/Generated/VideoPlaybackQuality.hs
--- a/src/JSDOM/Generated/VideoPlaybackQuality.hs
+++ b/src/JSDOM/Generated/VideoPlaybackQuality.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.creationTime Mozilla VideoPlaybackQuality.creationTime documentation> 
diff --git a/src/JSDOM/Generated/VideoTrack.hs b/src/JSDOM/Generated/VideoTrack.hs
--- a/src/JSDOM/Generated/VideoTrack.hs
+++ b/src/JSDOM/Generated/VideoTrack.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.id Mozilla VideoTrack.id documentation> 
diff --git a/src/JSDOM/Generated/VideoTrackList.hs b/src/JSDOM/Generated/VideoTrackList.hs
--- a/src/JSDOM/Generated/VideoTrackList.hs
+++ b/src/JSDOM/Generated/VideoTrackList.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.item Mozilla VideoTrackList.item documentation> 
diff --git a/src/JSDOM/Generated/VoidCallback.hs b/src/JSDOM/Generated/VoidCallback.hs
--- a/src/JSDOM/Generated/VoidCallback.hs
+++ b/src/JSDOM/Generated/VoidCallback.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VoidCallback Mozilla VoidCallback documentation> 
diff --git a/src/JSDOM/Generated/WaveShaperNode.hs b/src/JSDOM/Generated/WaveShaperNode.hs
--- a/src/JSDOM/Generated/WaveShaperNode.hs
+++ b/src/JSDOM/Generated/WaveShaperNode.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.curve Mozilla WaveShaperNode.curve documentation> 
diff --git a/src/JSDOM/Generated/WebGL2RenderingContext.hs b/src/JSDOM/Generated/WebGL2RenderingContext.hs
--- a/src/JSDOM/Generated/WebGL2RenderingContext.hs
+++ b/src/JSDOM/Generated/WebGL2RenderingContext.hs
@@ -200,7 +200,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bufferData Mozilla WebGL2RenderingContext.bufferData documentation> 
diff --git a/src/JSDOM/Generated/WebGLActiveInfo.hs b/src/JSDOM/Generated/WebGLActiveInfo.hs
--- a/src/JSDOM/Generated/WebGLActiveInfo.hs
+++ b/src/JSDOM/Generated/WebGLActiveInfo.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo.size Mozilla WebGLActiveInfo.size documentation> 
diff --git a/src/JSDOM/Generated/WebGLCompressedTextureATC.hs b/src/JSDOM/Generated/WebGLCompressedTextureATC.hs
--- a/src/JSDOM/Generated/WebGLCompressedTextureATC.hs
+++ b/src/JSDOM/Generated/WebGLCompressedTextureATC.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern COMPRESSED_RGB_ATC_WEBGL = 35986
 pattern COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 35987
diff --git a/src/JSDOM/Generated/WebGLCompressedTexturePVRTC.hs b/src/JSDOM/Generated/WebGLCompressedTexturePVRTC.hs
--- a/src/JSDOM/Generated/WebGLCompressedTexturePVRTC.hs
+++ b/src/JSDOM/Generated/WebGLCompressedTexturePVRTC.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840
 pattern COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 35841
diff --git a/src/JSDOM/Generated/WebGLCompressedTextureS3TC.hs b/src/JSDOM/Generated/WebGLCompressedTextureS3TC.hs
--- a/src/JSDOM/Generated/WebGLCompressedTextureS3TC.hs
+++ b/src/JSDOM/Generated/WebGLCompressedTextureS3TC.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern COMPRESSED_RGB_S3TC_DXT1_EXT = 33776
 pattern COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777
diff --git a/src/JSDOM/Generated/WebGLContextEvent.hs b/src/JSDOM/Generated/WebGLContextEvent.hs
--- a/src/JSDOM/Generated/WebGLContextEvent.hs
+++ b/src/JSDOM/Generated/WebGLContextEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextEvent Mozilla WebGLContextEvent documentation> 
diff --git a/src/JSDOM/Generated/WebGLDebugRendererInfo.hs b/src/JSDOM/Generated/WebGLDebugRendererInfo.hs
--- a/src/JSDOM/Generated/WebGLDebugRendererInfo.hs
+++ b/src/JSDOM/Generated/WebGLDebugRendererInfo.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern UNMASKED_VENDOR_WEBGL = 37445
 pattern UNMASKED_RENDERER_WEBGL = 37446
diff --git a/src/JSDOM/Generated/WebGLDebugShaders.hs b/src/JSDOM/Generated/WebGLDebugShaders.hs
--- a/src/JSDOM/Generated/WebGLDebugShaders.hs
+++ b/src/JSDOM/Generated/WebGLDebugShaders.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
@@ -29,7 +29,7 @@
 getTranslatedShaderSource self shader
   = liftDOM
       ((self ^. jsf "getTranslatedShaderSource" [toJSVal shader]) >>=
-         fromJSVal)
+         fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
 getTranslatedShaderSource_ ::
@@ -45,7 +45,7 @@
 getTranslatedShaderSourceUnsafe self shader
   = liftDOM
       (((self ^. jsf "getTranslatedShaderSource" [toJSVal shader]) >>=
-          fromJSVal)
+          fromMaybeJSString)
          >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
diff --git a/src/JSDOM/Generated/WebGLDepthTexture.hs b/src/JSDOM/Generated/WebGLDepthTexture.hs
--- a/src/JSDOM/Generated/WebGLDepthTexture.hs
+++ b/src/JSDOM/Generated/WebGLDepthTexture.hs
@@ -17,6 +17,6 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern UNSIGNED_INT_24_8_WEBGL = 34042
diff --git a/src/JSDOM/Generated/WebGLDrawBuffers.hs b/src/JSDOM/Generated/WebGLDrawBuffers.hs
--- a/src/JSDOM/Generated/WebGLDrawBuffers.hs
+++ b/src/JSDOM/Generated/WebGLDrawBuffers.hs
@@ -34,7 +34,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDrawBuffers.drawBuffersWEBGL Mozilla WebGLDrawBuffers.drawBuffersWEBGL documentation> 
diff --git a/src/JSDOM/Generated/WebGLLoseContext.hs b/src/JSDOM/Generated/WebGLLoseContext.hs
--- a/src/JSDOM/Generated/WebGLLoseContext.hs
+++ b/src/JSDOM/Generated/WebGLLoseContext.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLLoseContext.loseContext Mozilla WebGLLoseContext.loseContext documentation> 
diff --git a/src/JSDOM/Generated/WebGLRenderingContextBase.hs b/src/JSDOM/Generated/WebGLRenderingContextBase.hs
--- a/src/JSDOM/Generated/WebGLRenderingContextBase.hs
+++ b/src/JSDOM/Generated/WebGLRenderingContextBase.hs
@@ -207,7 +207,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.activeTexture Mozilla WebGLRenderingContextBase.activeTexture documentation> 
@@ -1133,7 +1133,7 @@
   = liftDOM
       (((toWebGLRenderingContextBase self) ^. jsf "getProgramInfoLog"
           [toJSVal program])
-         >>= fromJSVal)
+         >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramInfoLog Mozilla WebGLRenderingContextBase.getProgramInfoLog documentation> 
 getProgramInfoLog_ ::
@@ -1154,7 +1154,7 @@
   = liftDOM
       ((((toWebGLRenderingContextBase self) ^. jsf "getProgramInfoLog"
            [toJSVal program])
-          >>= fromJSVal)
+          >>= fromMaybeJSString)
          >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramInfoLog Mozilla WebGLRenderingContextBase.getProgramInfoLog documentation> 
@@ -1219,7 +1219,7 @@
   = liftDOM
       (((toWebGLRenderingContextBase self) ^. jsf "getShaderInfoLog"
           [toJSVal shader])
-         >>= fromJSVal)
+         >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderInfoLog Mozilla WebGLRenderingContextBase.getShaderInfoLog documentation> 
 getShaderInfoLog_ ::
@@ -1240,7 +1240,7 @@
   = liftDOM
       ((((toWebGLRenderingContextBase self) ^. jsf "getShaderInfoLog"
            [toJSVal shader])
-          >>= fromJSVal)
+          >>= fromMaybeJSString)
          >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderInfoLog Mozilla WebGLRenderingContextBase.getShaderInfoLog documentation> 
@@ -1285,7 +1285,7 @@
   = liftDOM
       (((toWebGLRenderingContextBase self) ^. jsf "getShaderSource"
           [toJSVal shader])
-         >>= fromJSVal)
+         >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderSource Mozilla WebGLRenderingContextBase.getShaderSource documentation> 
 getShaderSource_ ::
@@ -1306,7 +1306,7 @@
   = liftDOM
       ((((toWebGLRenderingContextBase self) ^. jsf "getShaderSource"
            [toJSVal shader])
-          >>= fromJSVal)
+          >>= fromMaybeJSString)
          >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderSource Mozilla WebGLRenderingContextBase.getShaderSource documentation> 
diff --git a/src/JSDOM/Generated/WebGLShaderPrecisionFormat.hs b/src/JSDOM/Generated/WebGLShaderPrecisionFormat.hs
--- a/src/JSDOM/Generated/WebGLShaderPrecisionFormat.hs
+++ b/src/JSDOM/Generated/WebGLShaderPrecisionFormat.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat.rangeMin Mozilla WebGLShaderPrecisionFormat.rangeMin documentation> 
diff --git a/src/JSDOM/Generated/WebGPUBuffer.hs b/src/JSDOM/Generated/WebGPUBuffer.hs
--- a/src/JSDOM/Generated/WebGPUBuffer.hs
+++ b/src/JSDOM/Generated/WebGPUBuffer.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUBuffer.length Mozilla WebGPUBuffer.length documentation> 
diff --git a/src/JSDOM/Generated/WebGPUCommandBuffer.hs b/src/JSDOM/Generated/WebGPUCommandBuffer.hs
--- a/src/JSDOM/Generated/WebGPUCommandBuffer.hs
+++ b/src/JSDOM/Generated/WebGPUCommandBuffer.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.createRenderCommandEncoderWithDescriptor Mozilla WebGPUCommandBuffer.createRenderCommandEncoderWithDescriptor documentation> 
diff --git a/src/JSDOM/Generated/WebGPUCommandQueue.hs b/src/JSDOM/Generated/WebGPUCommandQueue.hs
--- a/src/JSDOM/Generated/WebGPUCommandQueue.hs
+++ b/src/JSDOM/Generated/WebGPUCommandQueue.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.createCommandBuffer Mozilla WebGPUCommandQueue.createCommandBuffer documentation> 
diff --git a/src/JSDOM/Generated/WebGPUComputeCommandEncoder.hs b/src/JSDOM/Generated/WebGPUComputeCommandEncoder.hs
--- a/src/JSDOM/Generated/WebGPUComputeCommandEncoder.hs
+++ b/src/JSDOM/Generated/WebGPUComputeCommandEncoder.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUComputeCommandEncoder.setComputePipelineState Mozilla WebGPUComputeCommandEncoder.setComputePipelineState documentation> 
diff --git a/src/JSDOM/Generated/WebGPUDepthStencilDescriptor.hs b/src/JSDOM/Generated/WebGPUDepthStencilDescriptor.hs
--- a/src/JSDOM/Generated/WebGPUDepthStencilDescriptor.hs
+++ b/src/JSDOM/Generated/WebGPUDepthStencilDescriptor.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilDescriptor Mozilla WebGPUDepthStencilDescriptor documentation> 
diff --git a/src/JSDOM/Generated/WebGPUDepthStencilState.hs b/src/JSDOM/Generated/WebGPUDepthStencilState.hs
--- a/src/JSDOM/Generated/WebGPUDepthStencilState.hs
+++ b/src/JSDOM/Generated/WebGPUDepthStencilState.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilState.label Mozilla WebGPUDepthStencilState.label documentation> 
diff --git a/src/JSDOM/Generated/WebGPUDrawable.hs b/src/JSDOM/Generated/WebGPUDrawable.hs
--- a/src/JSDOM/Generated/WebGPUDrawable.hs
+++ b/src/JSDOM/Generated/WebGPUDrawable.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDrawable.texture Mozilla WebGPUDrawable.texture documentation> 
diff --git a/src/JSDOM/Generated/WebGPUFunction.hs b/src/JSDOM/Generated/WebGPUFunction.hs
--- a/src/JSDOM/Generated/WebGPUFunction.hs
+++ b/src/JSDOM/Generated/WebGPUFunction.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUFunction.name Mozilla WebGPUFunction.name documentation> 
diff --git a/src/JSDOM/Generated/WebGPULibrary.hs b/src/JSDOM/Generated/WebGPULibrary.hs
--- a/src/JSDOM/Generated/WebGPULibrary.hs
+++ b/src/JSDOM/Generated/WebGPULibrary.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.functionWithName Mozilla WebGPULibrary.functionWithName documentation> 
diff --git a/src/JSDOM/Generated/WebGPURenderCommandEncoder.hs b/src/JSDOM/Generated/WebGPURenderCommandEncoder.hs
--- a/src/JSDOM/Generated/WebGPURenderCommandEncoder.hs
+++ b/src/JSDOM/Generated/WebGPURenderCommandEncoder.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.setRenderPipelineState Mozilla WebGPURenderCommandEncoder.setRenderPipelineState documentation> 
diff --git a/src/JSDOM/Generated/WebGPURenderPassAttachmentDescriptor.hs b/src/JSDOM/Generated/WebGPURenderPassAttachmentDescriptor.hs
--- a/src/JSDOM/Generated/WebGPURenderPassAttachmentDescriptor.hs
+++ b/src/JSDOM/Generated/WebGPURenderPassAttachmentDescriptor.hs
@@ -21,7 +21,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.texture Mozilla WebGPURenderPassAttachmentDescriptor.texture documentation> 
diff --git a/src/JSDOM/Generated/WebGPURenderPassColorAttachmentDescriptor.hs b/src/JSDOM/Generated/WebGPURenderPassColorAttachmentDescriptor.hs
--- a/src/JSDOM/Generated/WebGPURenderPassColorAttachmentDescriptor.hs
+++ b/src/JSDOM/Generated/WebGPURenderPassColorAttachmentDescriptor.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassColorAttachmentDescriptor.clearColor Mozilla WebGPURenderPassColorAttachmentDescriptor.clearColor documentation> 
diff --git a/src/JSDOM/Generated/WebGPURenderPassDepthAttachmentDescriptor.hs b/src/JSDOM/Generated/WebGPURenderPassDepthAttachmentDescriptor.hs
--- a/src/JSDOM/Generated/WebGPURenderPassDepthAttachmentDescriptor.hs
+++ b/src/JSDOM/Generated/WebGPURenderPassDepthAttachmentDescriptor.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDepthAttachmentDescriptor.clearDepth Mozilla WebGPURenderPassDepthAttachmentDescriptor.clearDepth documentation> 
diff --git a/src/JSDOM/Generated/WebGPURenderPassDescriptor.hs b/src/JSDOM/Generated/WebGPURenderPassDescriptor.hs
--- a/src/JSDOM/Generated/WebGPURenderPassDescriptor.hs
+++ b/src/JSDOM/Generated/WebGPURenderPassDescriptor.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDescriptor Mozilla WebGPURenderPassDescriptor documentation> 
diff --git a/src/JSDOM/Generated/WebGPURenderPipelineColorAttachmentDescriptor.hs b/src/JSDOM/Generated/WebGPURenderPipelineColorAttachmentDescriptor.hs
--- a/src/JSDOM/Generated/WebGPURenderPipelineColorAttachmentDescriptor.hs
+++ b/src/JSDOM/Generated/WebGPURenderPipelineColorAttachmentDescriptor.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineColorAttachmentDescriptor.pixelFormat Mozilla WebGPURenderPipelineColorAttachmentDescriptor.pixelFormat documentation> 
diff --git a/src/JSDOM/Generated/WebGPURenderPipelineDescriptor.hs b/src/JSDOM/Generated/WebGPURenderPipelineDescriptor.hs
--- a/src/JSDOM/Generated/WebGPURenderPipelineDescriptor.hs
+++ b/src/JSDOM/Generated/WebGPURenderPipelineDescriptor.hs
@@ -23,7 +23,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor Mozilla WebGPURenderPipelineDescriptor documentation> 
diff --git a/src/JSDOM/Generated/WebGPURenderPipelineState.hs b/src/JSDOM/Generated/WebGPURenderPipelineState.hs
--- a/src/JSDOM/Generated/WebGPURenderPipelineState.hs
+++ b/src/JSDOM/Generated/WebGPURenderPipelineState.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineState.label Mozilla WebGPURenderPipelineState.label documentation> 
diff --git a/src/JSDOM/Generated/WebGPURenderingContext.hs b/src/JSDOM/Generated/WebGPURenderingContext.hs
--- a/src/JSDOM/Generated/WebGPURenderingContext.hs
+++ b/src/JSDOM/Generated/WebGPURenderingContext.hs
@@ -49,7 +49,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createLibrary Mozilla WebGPURenderingContext.createLibrary documentation> 
diff --git a/src/JSDOM/Generated/WebGPUTexture.hs b/src/JSDOM/Generated/WebGPUTexture.hs
--- a/src/JSDOM/Generated/WebGPUTexture.hs
+++ b/src/JSDOM/Generated/WebGPUTexture.hs
@@ -15,7 +15,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTexture.width Mozilla WebGPUTexture.width documentation> 
diff --git a/src/JSDOM/Generated/WebGPUTextureDescriptor.hs b/src/JSDOM/Generated/WebGPUTextureDescriptor.hs
--- a/src/JSDOM/Generated/WebGPUTextureDescriptor.hs
+++ b/src/JSDOM/Generated/WebGPUTextureDescriptor.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor Mozilla WebGPUTextureDescriptor documentation> 
diff --git a/src/JSDOM/Generated/WebKitAnimationEvent.hs b/src/JSDOM/Generated/WebKitAnimationEvent.hs
--- a/src/JSDOM/Generated/WebKitAnimationEvent.hs
+++ b/src/JSDOM/Generated/WebKitAnimationEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitAnimationEvent Mozilla WebKitAnimationEvent documentation> 
diff --git a/src/JSDOM/Generated/WebKitCSSMatrix.hs b/src/JSDOM/Generated/WebKitCSSMatrix.hs
--- a/src/JSDOM/Generated/WebKitCSSMatrix.hs
+++ b/src/JSDOM/Generated/WebKitCSSMatrix.hs
@@ -25,7 +25,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix Mozilla WebKitCSSMatrix documentation> 
diff --git a/src/JSDOM/Generated/WebKitCSSRegionRule.hs b/src/JSDOM/Generated/WebKitCSSRegionRule.hs
--- a/src/JSDOM/Generated/WebKitCSSRegionRule.hs
+++ b/src/JSDOM/Generated/WebKitCSSRegionRule.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSRegionRule.cssRules Mozilla WebKitCSSRegionRule.cssRules documentation> 
diff --git a/src/JSDOM/Generated/WebKitCSSViewportRule.hs b/src/JSDOM/Generated/WebKitCSSViewportRule.hs
--- a/src/JSDOM/Generated/WebKitCSSViewportRule.hs
+++ b/src/JSDOM/Generated/WebKitCSSViewportRule.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSViewportRule.style Mozilla WebKitCSSViewportRule.style documentation> 
diff --git a/src/JSDOM/Generated/WebKitMediaKeyError.hs b/src/JSDOM/Generated/WebKitMediaKeyError.hs
--- a/src/JSDOM/Generated/WebKitMediaKeyError.hs
+++ b/src/JSDOM/Generated/WebKitMediaKeyError.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 pattern MEDIA_KEYERR_UNKNOWN = 1
 pattern MEDIA_KEYERR_CLIENT = 2
diff --git a/src/JSDOM/Generated/WebKitMediaKeyMessageEvent.hs b/src/JSDOM/Generated/WebKitMediaKeyMessageEvent.hs
--- a/src/JSDOM/Generated/WebKitMediaKeyMessageEvent.hs
+++ b/src/JSDOM/Generated/WebKitMediaKeyMessageEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent Mozilla WebKitMediaKeyMessageEvent documentation> 
diff --git a/src/JSDOM/Generated/WebKitMediaKeyNeededEvent.hs b/src/JSDOM/Generated/WebKitMediaKeyNeededEvent.hs
--- a/src/JSDOM/Generated/WebKitMediaKeyNeededEvent.hs
+++ b/src/JSDOM/Generated/WebKitMediaKeyNeededEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyNeededEvent Mozilla WebKitMediaKeyNeededEvent documentation> 
diff --git a/src/JSDOM/Generated/WebKitMediaKeySession.hs b/src/JSDOM/Generated/WebKitMediaKeySession.hs
--- a/src/JSDOM/Generated/WebKitMediaKeySession.hs
+++ b/src/JSDOM/Generated/WebKitMediaKeySession.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.update Mozilla WebKitMediaKeySession.update documentation> 
diff --git a/src/JSDOM/Generated/WebKitMediaKeys.hs b/src/JSDOM/Generated/WebKitMediaKeys.hs
--- a/src/JSDOM/Generated/WebKitMediaKeys.hs
+++ b/src/JSDOM/Generated/WebKitMediaKeys.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys Mozilla WebKitMediaKeys documentation> 
@@ -51,20 +51,22 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.isTypeSupported Mozilla WebKitMediaKeys.isTypeSupported documentation> 
 isTypeSupported ::
                 (MonadDOM m, ToJSString keySystem, ToJSString type') =>
-                  WebKitMediaKeys -> keySystem -> Maybe type' -> m Bool
-isTypeSupported self keySystem type'
+                  keySystem -> Maybe type' -> m Bool
+isTypeSupported keySystem type'
   = liftDOM
-      ((self ^. jsf "isTypeSupported" [toJSVal keySystem, toJSVal type'])
+      (((jsg "WebKitMediaKeys") ^. jsf "isTypeSupported"
+          [toJSVal keySystem, toJSVal type'])
          >>= valToBool)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.isTypeSupported Mozilla WebKitMediaKeys.isTypeSupported documentation> 
 isTypeSupported_ ::
                  (MonadDOM m, ToJSString keySystem, ToJSString type') =>
-                   WebKitMediaKeys -> keySystem -> Maybe type' -> m ()
-isTypeSupported_ self keySystem type'
+                   keySystem -> Maybe type' -> m ()
+isTypeSupported_ keySystem type'
   = liftDOM
       (void
-         (self ^. jsf "isTypeSupported" [toJSVal keySystem, toJSVal type']))
+         ((jsg "WebKitMediaKeys") ^. jsf "isTypeSupported"
+            [toJSVal keySystem, toJSVal type']))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.keySystem Mozilla WebKitMediaKeys.keySystem documentation> 
 getKeySystem ::
diff --git a/src/JSDOM/Generated/WebKitNamedFlow.hs b/src/JSDOM/Generated/WebKitNamedFlow.hs
--- a/src/JSDOM/Generated/WebKitNamedFlow.hs
+++ b/src/JSDOM/Generated/WebKitNamedFlow.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegionsByContent Mozilla WebKitNamedFlow.getRegionsByContent documentation> 
diff --git a/src/JSDOM/Generated/WebKitNamespace.hs b/src/JSDOM/Generated/WebKitNamespace.hs
--- a/src/JSDOM/Generated/WebKitNamespace.hs
+++ b/src/JSDOM/Generated/WebKitNamespace.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamespace.messageHandlers Mozilla WebKitNamespace.messageHandlers documentation> 
diff --git a/src/JSDOM/Generated/WebKitPlaybackTargetAvailabilityEvent.hs b/src/JSDOM/Generated/WebKitPlaybackTargetAvailabilityEvent.hs
--- a/src/JSDOM/Generated/WebKitPlaybackTargetAvailabilityEvent.hs
+++ b/src/JSDOM/Generated/WebKitPlaybackTargetAvailabilityEvent.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPlaybackTargetAvailabilityEvent Mozilla WebKitPlaybackTargetAvailabilityEvent documentation> 
diff --git a/src/JSDOM/Generated/WebKitPoint.hs b/src/JSDOM/Generated/WebKitPoint.hs
--- a/src/JSDOM/Generated/WebKitPoint.hs
+++ b/src/JSDOM/Generated/WebKitPoint.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint Mozilla WebKitPoint documentation> 
diff --git a/src/JSDOM/Generated/WebKitSubtleCrypto.hs b/src/JSDOM/Generated/WebKitSubtleCrypto.hs
--- a/src/JSDOM/Generated/WebKitSubtleCrypto.hs
+++ b/src/JSDOM/Generated/WebKitSubtleCrypto.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
diff --git a/src/JSDOM/Generated/WebKitTransitionEvent.hs b/src/JSDOM/Generated/WebKitTransitionEvent.hs
--- a/src/JSDOM/Generated/WebKitTransitionEvent.hs
+++ b/src/JSDOM/Generated/WebKitTransitionEvent.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent Mozilla WebKitTransitionEvent documentation> 
diff --git a/src/JSDOM/Generated/WebSocket.hs b/src/JSDOM/Generated/WebSocket.hs
--- a/src/JSDOM/Generated/WebSocket.hs
+++ b/src/JSDOM/Generated/WebSocket.hs
@@ -22,7 +22,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket Mozilla WebSocket documentation> 
@@ -97,24 +97,25 @@
 
 -- | <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")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.protocol Mozilla WebSocket.protocol documentation> 
 getProtocol ::
             (MonadDOM m, FromJSString result) => WebSocket -> m (Maybe result)
-getProtocol self = liftDOM ((self ^. js "protocol") >>= fromJSVal)
+getProtocol self
+  = liftDOM ((self ^. js "protocol") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.protocol Mozilla WebSocket.protocol documentation> 
 getProtocolUnsafe ::
@@ -122,7 +123,7 @@
                     WebSocket -> m result
 getProtocolUnsafe self
   = liftDOM
-      (((self ^. js "protocol") >>= fromJSVal) >>=
+      (((self ^. js "protocol") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.protocol Mozilla WebSocket.protocol documentation> 
@@ -135,7 +136,7 @@
 getExtensions ::
               (MonadDOM m, FromJSString result) => WebSocket -> m (Maybe result)
 getExtensions self
-  = liftDOM ((self ^. js "extensions") >>= fromJSVal)
+  = liftDOM ((self ^. js "extensions") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.extensions Mozilla WebSocket.extensions documentation> 
 getExtensionsUnsafe ::
@@ -143,7 +144,7 @@
                       WebSocket -> m result
 getExtensionsUnsafe self
   = liftDOM
-      (((self ^. js "extensions") >>= fromJSVal) >>=
+      (((self ^. js "extensions") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.extensions Mozilla WebSocket.extensions documentation> 
diff --git a/src/JSDOM/Generated/WheelEvent.hs b/src/JSDOM/Generated/WheelEvent.hs
--- a/src/JSDOM/Generated/WheelEvent.hs
+++ b/src/JSDOM/Generated/WheelEvent.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent Mozilla WheelEvent documentation> 
diff --git a/src/JSDOM/Generated/Window.hs b/src/JSDOM/Generated/Window.hs
--- a/src/JSDOM/Generated/Window.hs
+++ b/src/JSDOM/Generated/Window.hs
@@ -57,7 +57,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.decodeURI Mozilla Window.decodeURI documentation> 
@@ -291,7 +291,7 @@
 prompt self message defaultValue
   = liftDOM
       ((self ^. jsf "prompt" [toJSVal message, toJSVal defaultValue]) >>=
-         fromJSVal)
+         fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.prompt Mozilla Window.prompt documentation> 
 prompt_ ::
@@ -310,7 +310,7 @@
 promptUnsafe self message defaultValue
   = liftDOM
       (((self ^. jsf "prompt" [toJSVal message, toJSVal defaultValue])
-          >>= fromJSVal)
+          >>= fromMaybeJSString)
          >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.prompt Mozilla Window.prompt documentation> 
diff --git a/src/JSDOM/Generated/WindowEventHandlers.hs b/src/JSDOM/Generated/WindowEventHandlers.hs
--- a/src/JSDOM/Generated/WindowEventHandlers.hs
+++ b/src/JSDOM/Generated/WindowEventHandlers.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onbeforeunload Mozilla WindowEventHandlers.onbeforeunload documentation> 
@@ -45,7 +45,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/JSDOM/Generated/WindowOrWorkerGlobalScope.hs b/src/JSDOM/Generated/WindowOrWorkerGlobalScope.hs
--- a/src/JSDOM/Generated/WindowOrWorkerGlobalScope.hs
+++ b/src/JSDOM/Generated/WindowOrWorkerGlobalScope.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.setTimeout Mozilla WindowOrWorkerGlobalScope.setTimeout documentation> 
diff --git a/src/JSDOM/Generated/Worker.hs b/src/JSDOM/Generated/Worker.hs
--- a/src/JSDOM/Generated/Worker.hs
+++ b/src/JSDOM/Generated/Worker.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker Mozilla Worker documentation> 
@@ -42,4 +42,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/JSDOM/Generated/WorkerGlobalScope.hs b/src/JSDOM/Generated/WorkerGlobalScope.hs
--- a/src/JSDOM/Generated/WorkerGlobalScope.hs
+++ b/src/JSDOM/Generated/WorkerGlobalScope.hs
@@ -19,7 +19,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.fetch Mozilla WorkerGlobalScope.fetch documentation> 
@@ -86,7 +86,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/JSDOM/Generated/WorkerLocation.hs b/src/JSDOM/Generated/WorkerLocation.hs
--- a/src/JSDOM/Generated/WorkerLocation.hs
+++ b/src/JSDOM/Generated/WorkerLocation.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.href Mozilla WorkerLocation.href documentation> 
diff --git a/src/JSDOM/Generated/WorkerNavigator.hs b/src/JSDOM/Generated/WorkerNavigator.hs
--- a/src/JSDOM/Generated/WorkerNavigator.hs
+++ b/src/JSDOM/Generated/WorkerNavigator.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.webkitTemporaryStorage Mozilla WorkerNavigator.webkitTemporaryStorage documentation> 
diff --git a/src/JSDOM/Generated/WritableStream.hs b/src/JSDOM/Generated/WritableStream.hs
--- a/src/JSDOM/Generated/WritableStream.hs
+++ b/src/JSDOM/Generated/WritableStream.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream Mozilla WritableStream documentation> 
diff --git a/src/JSDOM/Generated/XMLHttpRequest.hs b/src/JSDOM/Generated/XMLHttpRequest.hs
--- a/src/JSDOM/Generated/XMLHttpRequest.hs
+++ b/src/JSDOM/Generated/XMLHttpRequest.hs
@@ -27,7 +27,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest Mozilla XMLHttpRequest documentation> 
@@ -80,7 +80,8 @@
                     XMLHttpRequest -> name -> m (Maybe result)
 getResponseHeader self name
   = liftDOM
-      ((self ^. jsf "getResponseHeader" [toJSVal name]) >>= fromJSVal)
+      ((self ^. jsf "getResponseHeader" [toJSVal name]) >>=
+         fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getResponseHeader Mozilla XMLHttpRequest.getResponseHeader documentation> 
 getResponseHeader_ ::
@@ -94,7 +95,8 @@
                           XMLHttpRequest -> name -> m result
 getResponseHeaderUnsafe self name
   = liftDOM
-      (((self ^. jsf "getResponseHeader" [toJSVal name]) >>= fromJSVal)
+      (((self ^. jsf "getResponseHeader" [toJSVal name]) >>=
+          fromMaybeJSString)
          >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getResponseHeader Mozilla XMLHttpRequest.getResponseHeader documentation> 
@@ -131,7 +133,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")
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.readyState Mozilla XMLHttpRequest.readyState documentation> 
 getReadyState :: (MonadDOM m) => XMLHttpRequest -> m Word
@@ -203,7 +206,7 @@
                 (MonadDOM m, FromJSString result) =>
                   XMLHttpRequest -> m (Maybe result)
 getResponseText self
-  = liftDOM ((self ^. js "responseText") >>= fromJSVal)
+  = liftDOM ((self ^. js "responseText") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseText Mozilla XMLHttpRequest.responseText documentation> 
 getResponseTextUnsafe ::
@@ -211,7 +214,7 @@
                         XMLHttpRequest -> m result
 getResponseTextUnsafe self
   = liftDOM
-      (((self ^. js "responseText") >>= fromJSVal) >>=
+      (((self ^. js "responseText") >>= fromMaybeJSString) >>=
          maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseText Mozilla XMLHttpRequest.responseText documentation> 
diff --git a/src/JSDOM/Generated/XMLHttpRequestEventTarget.hs b/src/JSDOM/Generated/XMLHttpRequestEventTarget.hs
--- a/src/JSDOM/Generated/XMLHttpRequestEventTarget.hs
+++ b/src/JSDOM/Generated/XMLHttpRequestEventTarget.hs
@@ -18,47 +18,47 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.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/JSDOM/Generated/XMLHttpRequestProgressEvent.hs b/src/JSDOM/Generated/XMLHttpRequestProgressEvent.hs
--- a/src/JSDOM/Generated/XMLHttpRequestProgressEvent.hs
+++ b/src/JSDOM/Generated/XMLHttpRequestProgressEvent.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestProgressEvent.position Mozilla XMLHttpRequestProgressEvent.position documentation> 
diff --git a/src/JSDOM/Generated/XMLSerializer.hs b/src/JSDOM/Generated/XMLSerializer.hs
--- a/src/JSDOM/Generated/XMLSerializer.hs
+++ b/src/JSDOM/Generated/XMLSerializer.hs
@@ -17,7 +17,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer Mozilla XMLSerializer documentation> 
diff --git a/src/JSDOM/Generated/XPathEvaluator.hs b/src/JSDOM/Generated/XPathEvaluator.hs
--- a/src/JSDOM/Generated/XPathEvaluator.hs
+++ b/src/JSDOM/Generated/XPathEvaluator.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator Mozilla XPathEvaluator documentation> 
diff --git a/src/JSDOM/Generated/XPathException.hs b/src/JSDOM/Generated/XPathException.hs
--- a/src/JSDOM/Generated/XPathException.hs
+++ b/src/JSDOM/Generated/XPathException.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathException.toString Mozilla XPathException.toString documentation> 
diff --git a/src/JSDOM/Generated/XPathExpression.hs b/src/JSDOM/Generated/XPathExpression.hs
--- a/src/JSDOM/Generated/XPathExpression.hs
+++ b/src/JSDOM/Generated/XPathExpression.hs
@@ -16,7 +16,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathExpression.evaluate Mozilla XPathExpression.evaluate documentation> 
diff --git a/src/JSDOM/Generated/XPathNSResolver.hs b/src/JSDOM/Generated/XPathNSResolver.hs
--- a/src/JSDOM/Generated/XPathNSResolver.hs
+++ b/src/JSDOM/Generated/XPathNSResolver.hs
@@ -18,7 +18,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
@@ -27,7 +27,8 @@
                      XPathNSResolver -> Maybe prefix -> m (Maybe result)
 lookupNamespaceURI self prefix
   = liftDOM
-      ((self ^. jsf "lookupNamespaceURI" [toJSVal prefix]) >>= fromJSVal)
+      ((self ^. jsf "lookupNamespaceURI" [toJSVal prefix]) >>=
+         fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
 lookupNamespaceURI_ ::
@@ -45,7 +46,7 @@
 lookupNamespaceURIUnsafe self prefix
   = liftDOM
       (((self ^. jsf "lookupNamespaceURI" [toJSVal prefix]) >>=
-          fromJSVal)
+          fromMaybeJSString)
          >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
diff --git a/src/JSDOM/Generated/XPathResult.hs b/src/JSDOM/Generated/XPathResult.hs
--- a/src/JSDOM/Generated/XPathResult.hs
+++ b/src/JSDOM/Generated/XPathResult.hs
@@ -25,7 +25,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.iterateNext Mozilla XPathResult.iterateNext documentation> 
diff --git a/src/JSDOM/Generated/XSLTProcessor.hs b/src/JSDOM/Generated/XSLTProcessor.hs
--- a/src/JSDOM/Generated/XSLTProcessor.hs
+++ b/src/JSDOM/Generated/XSLTProcessor.hs
@@ -20,7 +20,7 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName)
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
 import JSDOM.Enums
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor Mozilla XSLTProcessor documentation> 
@@ -95,7 +95,7 @@
   = liftDOM
       ((self ^. jsf "getParameter"
           [toJSVal namespaceURI, toJSVal localName])
-         >>= fromJSVal)
+         >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.getParameter Mozilla XSLTProcessor.getParameter documentation> 
 getParameter_ ::
@@ -116,7 +116,7 @@
   = liftDOM
       (((self ^. jsf "getParameter"
            [toJSVal namespaceURI, toJSVal localName])
-          >>= fromJSVal)
+          >>= fromMaybeJSString)
          >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.getParameter Mozilla XSLTProcessor.getParameter documentation> 
