process-extras-0.3.3.1: src/Utils.hs
{-# LANGUAGE TemplateHaskell #-}
module Utils where
import Control.Concurrent
import Control.Exception
forkWait :: IO a -> IO (IO a)
forkWait a = do
res <- newEmptyMVar
_ <- mask $ \restore -> forkIO $ try (restore a) >>= putMVar res
return (takeMVar res >>= either (\ex -> throwIO (ex :: SomeException)) return)