diff --git a/Control/Monad/STM.hs b/Control/Monad/STM.hs
--- a/Control/Monad/STM.hs
+++ b/Control/Monad/STM.hs
@@ -31,12 +31,13 @@
 	orElse,
 	check,
 #endif
+        throwSTM,
         catchSTM
   ) where
 
 #ifdef __GLASGOW_HASKELL__
 import GHC.Conc
-#if ! MIN_VERSION_base(4,3,0)
+#if ! (MIN_VERSION_base(4,3,0))
 import Control.Monad	( MonadPlus(..) )
 #endif
 #else
@@ -44,7 +45,7 @@
 #endif
 
 #ifdef __GLASGOW_HASKELL__
-#if ! MIN_VERSION_base(4,3,0)
+#if ! (MIN_VERSION_base(4,3,0))
 instance MonadPlus STM where
   mzero = retry
   mplus = orElse
diff --git a/Control/Sequential/STM.hs b/Control/Sequential/STM.hs
--- a/Control/Sequential/STM.hs
+++ b/Control/Sequential/STM.hs
@@ -4,7 +4,7 @@
 
 -- #hide
 module Control.Sequential.STM (
-	STM, atomically, catchSTM,
+	STM, atomically, throwSTM, catchSTM,
 	TVar, newTVar, newTVarIO, readTVar, readTVarIO, writeTVar
     ) where
 
@@ -48,6 +48,13 @@
 	rollback
 	throw ex
 #endif
+
+#ifdef BASE4
+throwSTM :: Exception e => e -> STM a
+#else
+throwSTM :: Exception -> STM a
+#endif
+throwSTM = STM . const . throwIO
 
 #ifdef BASE4
 catchSTM :: Exception e => STM a -> (e -> STM a) -> STM a
diff --git a/stm.cabal b/stm.cabal
--- a/stm.cabal
+++ b/stm.cabal
@@ -1,5 +1,5 @@
 name:		stm
-version:	2.1.2.2
+version:        2.2.0.0
 license:	BSD3
 license-file:	LICENSE
 maintainer:	libraries@haskell.org
