faktory-1.0.1.2: library/Faktory/Prelude.hs
module Faktory.Prelude
( module X
, module Faktory.Prelude
)
where
import Prelude as X
import Control.Concurrent (ThreadId, forkIO, myThreadId, threadDelay)
import Control.Exception.Safe as X
import Control.Monad as X
import Data.Foldable as X
import Data.Text as X (Text, pack, unpack)
import Data.Traversable as X
threadDelaySeconds :: Int -> IO ()
threadDelaySeconds n = threadDelay $ n * 1000000
forkIOWithThrowToParent :: IO () -> IO ThreadId
forkIOWithThrowToParent action = do
parent <- myThreadId
forkIO $ action `X.catchAny` \err -> throwTo parent err
fromRightThrows :: MonadThrow m => Either String a -> m a
fromRightThrows = either throwString pure