A retry Haskell library for humans:
Retry-After headers.Stamina.defaults :: (MonadIO m) => m RetrySettingsStamina.RetryStatus = RetryStatus { attempts :: Int, delay :: NominalDiffTime, totalDelay :: NominalDiffTime, resetInitial :: IO (), lastException :: Maybe SomeException }Stamina.retry :: (MonadCatch m, MonadIO m) => RetrySettings -> (RetryStatus -> m a) -> m aStamina.RetryAction = RaiseException | Retry | RetryDelay NominalDiffTime | RetryTime UTCTimeStamina.retryFor :: (MonadCatch m, MonadIO m, Exception exc) => RetrySettings -> (exc -> m RetryAction) -> (RetryStatus -> m a) -> m aStamina.HTTP.retry :: (MonadIO m, MonadCatch m) => Stamina.RetrySettings -> (Stamina.RetryStatus -> m a) -> m aimport qualified Stamina
import Control.Monad.Catch (throwM)
import Control.Monad.IO.Class (MonadIO)
go :: IO ()
go = Stamina.retry Stamina.defaults $ \retryStatus -> do
throwM $ userError "nope"
handler :: (MonadIO m) => IOError -> m Stamina.RetryAction
handler _ = return Stamina.Retry
go2 :: IO ()
go2 = Stamina.retryFor Stamina.defaults handler $ \retryStatus -> do
throwM $ userError "nope"
Install devenv.sh.
devenv shell
stack build
main = undefined
42 commits
1 commits
Haskell
98.9%
Nix
1.1%
A retry Haskell library for humans:
Retry-After headers.Stamina.defaults :: (MonadIO m) => m RetrySettingsStamina.RetryStatus = RetryStatus { attempts :: Int, delay :: NominalDiffTime, totalDelay :: NominalDiffTime, resetInitial :: IO (), lastException :: Maybe SomeException }Stamina.retry :: (MonadCatch m, MonadIO m) => RetrySettings -> (RetryStatus -> m a) -> m aStamina.RetryAction = RaiseException | Retry | RetryDelay NominalDiffTime | RetryTime UTCTimeStamina.retryFor :: (MonadCatch m, MonadIO m, Exception exc) => RetrySettings -> (exc -> m RetryAction) -> (RetryStatus -> m a) -> m aStamina.HTTP.retry :: (MonadIO m, MonadCatch m) => Stamina.RetrySettings -> (Stamina.RetryStatus -> m a) -> m aimport qualified Stamina
import Control.Monad.Catch (throwM)
import Control.Monad.IO.Class (MonadIO)
go :: IO ()
go = Stamina.retry Stamina.defaults $ \retryStatus -> do
throwM $ userError "nope"
handler :: (MonadIO m) => IOError -> m Stamina.RetryAction
handler _ = return Stamina.Retry
go2 :: IO ()
go2 = Stamina.retryFor Stamina.defaults handler $ \retryStatus -> do
throwM $ userError "nope"
Install devenv.sh.
devenv shell
stack build
main = undefined
42 commits
1 commits
Haskell
98.9%
Nix
1.1%