diff --git a/hasql-transaction.cabal b/hasql-transaction.cabal
--- a/hasql-transaction.cabal
+++ b/hasql-transaction.cabal
@@ -1,7 +1,7 @@
 name:
   hasql-transaction
 version:
-  0.4.2
+  0.4.3
 category:
   Hasql, Database, PostgreSQL
 synopsis:
diff --git a/library/Hasql/Transaction.hs b/library/Hasql/Transaction.hs
--- a/library/Hasql/Transaction.hs
+++ b/library/Hasql/Transaction.hs
@@ -57,7 +57,7 @@
   deriving (Show, Eq, Ord, Enum, Bounded)
 
 -- |
--- Execute the transaction using the provided isolation level, mode and database connection.
+-- Execute the transaction using the provided isolation level and mode.
 {-# INLINABLE run #-}
 run :: Transaction a -> IsolationLevel -> Mode -> Session.Session a
 run (Transaction session) isolation mode =
@@ -65,7 +65,8 @@
     Session.query () (Queries.beginTransaction mode')
     resultEither <- tryError session
     case resultEither of
-      Left error ->
+      Left error -> do
+        Session.query () Queries.abortTransaction
         case error of
           Session.ResultError (Session.ServerError code _ _ _) | code == ErrorCodes.serialization_failure ->
             run (Transaction session) isolation mode
