[Haskell-cafe] Throwing an exception in STM without rolling back state?