diff --git a/ghcjs-dom.cabal b/ghcjs-dom.cabal
--- a/ghcjs-dom.cabal
+++ b/ghcjs-dom.cabal
@@ -1,5 +1,5 @@
 name: ghcjs-dom
-version: 0.2.3.0
+version: 0.2.3.1
 cabal-version: >=1.10
 build-type: Simple
 license: MIT
diff --git a/src/GHCJS/DOM/EventM.hs b/src/GHCJS/DOM/EventM.hs
--- a/src/GHCJS/DOM/EventM.hs
+++ b/src/GHCJS/DOM/EventM.hs
@@ -101,7 +101,7 @@
 on target eventName callback = do
     l <- newListener callback
     addListener target eventName l False
-    return (removeListener target eventName l False)
+    return (removeListener target eventName l False >> releaseListener l)
 
 event :: EventM t e e
 event = ask
