Starting Attaching successful invariant that makes an update Attaching successful invariant that uses retry&orelse internally Attaching a failed invariant that makes an update Caught: Exn raised in invariant Attaching an invariant that blocks Another update to the TVar with the blocking invariant Update the TVar to cause the invariant to block again (expect thread blocked indef) Caught: thread blocked indefinitely in an STM transaction