Might be safer to change this to:

```scala
  import scala.util.control.NonFatal

  try {
    txn(this)
    exec()
  } catch {
    case NonFatal(e) => discard()
  }
```