Currently, `GHC.Conc` has
alwaysSucceeds :: STM a -> STM ()
alwaysSucceeds i = do ( i >> retry ) `orElse` ( return () )
checkInv i
If I understand what's going on here (which I may not), I think this
should be equivalent to
alwaysSucceeds i = (i >> retry) `orElse` checkInv i
David Feuer