diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Changelog for quickjs-hs
 
+### 0.1.2.3
+
+* Fix for infinite loop caused by incorrect defintion of SomeJSRuntimeException
+
 ### 0.1.2.2
 
 * Bumped the quickjs library to release 2020-09-06
diff --git a/quickjs-hs.cabal b/quickjs-hs.cabal
--- a/quickjs-hs.cabal
+++ b/quickjs-hs.cabal
@@ -1,6 +1,6 @@
 cabal-version:  1.12
 name:           quickjs-hs
-version:        0.1.2.2
+version:        0.1.2.3
 homepage:       https://github.com/goodlyrottenapple/quickjs-hs#readme
 bug-reports:    https://github.com/goodlyrottenapple/quickjs-hs/issues
 author:         Sam Balco
diff --git a/src/Quickjs/Error.hs b/src/Quickjs/Error.hs
--- a/src/Quickjs/Error.hs
+++ b/src/Quickjs/Error.hs
@@ -18,10 +18,7 @@
 instance Show SomeJSRuntimeException where
     show (SomeJSRuntimeException e) = show e
 
-instance Exception SomeJSRuntimeException where
-    toException = jsRuntimeExceptionToException
-    fromException = jsRuntimeExceptionFromException
-
+instance Exception SomeJSRuntimeException
 
 jsRuntimeExceptionToException :: Exception e => e -> SomeException
 jsRuntimeExceptionToException = toException . SomeJSRuntimeException
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Main where
@@ -10,11 +12,13 @@
 import qualified Test.QuickCheck.Monadic as QC
 import           Data.Aeson              (Value(..))
 import           Control.Monad.IO.Class  (liftIO)
-import           Control.Monad.Catch     (SomeException, MonadCatch(..))
+import           Control.Monad.Catch     (try, SomeException, MonadCatch(..))
 import           Data.Text               (pack)
 import qualified Data.HashMap.Strict            as HM
 import qualified Data.Vector             as V
 import           Quickjs
+import Test.HUnit (assertFailure)
+import Quickjs.Error (SomeJSRuntimeException)
 
 
 eval_1_plus_2 :: Assertion
@@ -22,6 +26,13 @@
   v <- eval "1 + 2;"
   liftIO $ v @?= Number 3
 
+
+eval_throw :: Assertion
+eval_throw = quickjsMultithreaded $
+  try (eval "throw 'Error'") >>= \case
+    Left (_ :: SomeJSRuntimeException) -> return ()
+    Right _ -> liftIO $ assertFailure "should fail with an Exception..."
+
 genText = do 
   k <- QC.choose (0,200) 
   pack <$> QC.vectorOf k (QC.oneof $ map pure $ ['0'..'~'])
@@ -63,6 +74,7 @@
   testGroup "Quickjs"
     [ testCase "empty quickjs call" (quickjsMultithreaded $ pure ())
     , testCase "eval '1 + 2;'" eval_1_plus_2
+    , testCase "eval throw" eval_throw
     , testProperty "marshalling Value to JSValue and back" marshall_to_from_JSValue
     ]
 
