anchor.diff:      let someTran = Tx.transactional2 someTranAndFail
       let result = someTran conn
       match result with
  -    | Tx.Commit v -> raise <| Exception("transaction should have failed!")
  -    | Tx.Rollback v -> raise <| Exception("transaction should have failed!")
  +    | Tx.Commit v -> failwith "transaction should have failed!"
  +    | Tx.Rollback v -> failwith "transaction should have failed!"
       | Tx.Failed e -> printfn "Failed with exception %A" e
       Assert.AreEqual(0L, countUsers conn)
   
  
positive.code:     match result with
      | Tx.Commit a -> Assert.AreEqual(50L, countUsers c)
      | Tx.Rollback a -> failwith "Transaction should not have failed"
      | Tx.Failed e -> raise <| Exception("Transaction should not have failed", e)
  
  [<Test;Parallelizable>]
  let ``tx monad for with error`` () =
  
negative.code: open Microsoft.FSharp.Reflection
  
  let P = Sql.Parameter.make
  let failwithe (e: #exn) msg = raise <| Exception(msg, e)
  let failwithef (e: #exn) = Printf.kprintf (failwithe e)
  
  [<Test>]
  let catchtest() =
  