Run handler on STM retry
It would be nice to have a function like:
-- | Perform a series of STM actions atomically.
--
-- Whenever the transaction retries, run the handler. If it doesn't return 'Nothing',
-- stop the retrying and return the value given by the handler.
atomicallyWithRetryHandler :: STM a -> IO (Maybe a) -> IO a
This would allow tracking retry statistics, printing debug messages on each retry, etc. without resorting to unsafeIOToSTM which can't safely do things like printing.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.10.2 |
| Type | FeatureRequest |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | libraries (other) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |