anchor.diff:          printfn "Error: %A" e
       | _ -> Assert.Fail("Transaction should have failed")
   
  +let txInsert id = 
  +    Tx.execNonQueryi "insert into person (id,name) values (@id, @name)" [P("@id",id);P("@name", "juan")]
  +
   [<Test;Parallelizable>]
   let ``tx monad error rollback`` () = 
       let c = withMemDb()
  
positive.code:     let c = withMemDb()
      let tran() = tx {
          try
              do! Tx.execNonQueryi "insert into person (id,name) values (@id, @name)" [P("@id",1);P("@name", "juan")]
              failwith "bye"
              do! Tx.execNonQueryi "insert into person (id,name) values (@id, @name)" [P("@id",3);P("@name", "juan")]
          with e ->
              do! Tx.execNonQueryi "insert into person (id,name) values (@id, @name)" [P("@id",2);P("@name", "juan")]
      }
      let result = tran() c
      match result with
  
negative.code: let ``tx monad rollback and zero`` () = 
      let c = withMemDb()
      let tran() = tx {
          do! txInsert 3
          if 1 = 1
              then do! Tx.rollback 4
          return 0
  