diff --git a/haskell-neo4j-client.cabal b/haskell-neo4j-client.cabal
--- a/haskell-neo4j-client.cabal
+++ b/haskell-neo4j-client.cabal
@@ -1,5 +1,5 @@
 name:                haskell-neo4j-client
-version:             0.3.0.8
+version:             0.3.0.9
 synopsis:            A Haskell neo4j client
 description:         
     Library to interact with Neo4j databases. 
diff --git a/src/Database/Neo4j/Transactional/Cypher.hs b/src/Database/Neo4j/Transactional/Cypher.hs
--- a/src/Database/Neo4j/Transactional/Cypher.hs
+++ b/src/Database/Neo4j/Transactional/Cypher.hs
@@ -205,8 +205,12 @@
 catchErrors t = catchE t handle
     where handle err@("Rollback", _) = ExceptT $ return (Left err)
           handle err = do
-                        rollback
+                        st <- lift get
+                        -- We can get here from commitWith, which runs and commits, in that case rollback is useless
+                        unless (isDone st) rollback
                         ExceptT $ return (Left err)
+          isDone TransDone = True
+          isDone _ = False
 
 -- | Run a cypher query in a transaction, if an error occurs the transaction will stop and rollback
 cypher :: T.Text -> Params -> Transaction Result
diff --git a/tests/IntegrationTests.hs b/tests/IntegrationTests.hs
--- a/tests/IntegrationTests.hs
+++ b/tests/IntegrationTests.hs
@@ -1542,8 +1542,6 @@
                     _ <- B.createRelationship "type1" someOtherProperties n1 n2
                     B.createRelationship "type2" someProperties n2 n1
                 let g3 = g `G.union` g2
-                let g4 = G.addRelationship (head $ G.getRelationships g) g2
-                neo4jEqual 3 (length $ G.getRelationships g4)
                 neo4jEqual 4 (length $ G.getNodes g3)
                 neo4jEqual 4 (length $ G.getRelationships g3)
                 neo4jBool $ someOtherProperties `elem` map getRelProperties (G.getRelationships g3)
