diff --git a/hasql-transaction.cabal b/hasql-transaction.cabal
--- a/hasql-transaction.cabal
+++ b/hasql-transaction.cabal
@@ -1,5 +1,5 @@
 name: hasql-transaction
-version: 0.10
+version: 0.10.0.1
 category: Hasql, Database, PostgreSQL
 synopsis: Composable abstraction over retryable transactions for Hasql
 homepage: https://github.com/nikita-volkov/hasql-transaction
diff --git a/library/Hasql/Transaction.hs b/library/Hasql/Transaction.hs
--- a/library/Hasql/Transaction.hs
+++ b/library/Hasql/Transaction.hs
@@ -144,7 +144,7 @@
 Restrict the transaction isolation level.
 
 Will pick up the strictest level among the one you've specified and
-the one associated with the updated transaction.
+the one already associated with the transaction being updated.
 -}
 restrict :: Level -> Transaction a -> Transaction a
 restrict newLevel (Transaction mode oldLevel sessions) = Transaction mode (max newLevel oldLevel) sessions
diff --git a/library/Hasql/Transaction/Sessions.hs b/library/Hasql/Transaction/Sessions.hs
--- a/library/Hasql/Transaction/Sessions.hs
+++ b/library/Hasql/Transaction/Sessions.hs
@@ -15,14 +15,14 @@
 
 
 inAlternatingTransaction :: Mode -> Level -> [Session (a, Condemnation)] -> Session a
-inAlternatingTransaction mode level =
+inAlternatingTransaction mode level sessions =
   let
     loop = \ case
       session : sessionsTail -> tryTransaction mode level session >>= \ case
         Just a -> return a
         Nothing -> loop sessionsTail
-      _ -> error "Attempt to run no alternatives"
-    in loop
+      _ -> loop sessions
+    in loop sessions
 
 tryTransaction :: Mode -> Level -> Session (a, Condemnation) -> Session (Maybe a)
 tryTransaction mode level session = do
