title: STM monad problem
body: <p>This is just a hypothetical scenario to illustrate my question.  Suppose that there are two threads and one TVar shared between them.  In one thread there is an atomically block that reads the TVar and takes 10s to complete.  In another thread is an atomically block that modifies the TVar every second.  Will the first atomically block ever complete?  Surely it will just keep going back to the beginning, because the log is perpetually in an inconsistent state?  </p>