tryResult :: IO Bool -> IO KatResult
tryResult f = do
    er <- try f
    case er of
        Left (e :: SomeException)
            | show e == "<<timeout>>" -> throwIO e
            | otherwise               -> return $ KatFailed (show e)
        Right r                       -> return $ if r then KatSuccess else KatFailed "test failed"
tryResult :: IO Bool -> IO KatResult
tryResult f = do
    er <- try f
    case er of
        Left (e :: SomeException)
            | show e == "<<timeout>>" -> throwIO e
            | otherwise               -> return $ KatFailed (show e)
        Right r                       -> return $ if r then KatSuccess else KatFailed "test failed"
tryResult f = do
    er <- try f
    case er of
        Left (e :: SomeException)
            | show e == "<<timeout>>" -> throwIO e
            | otherwise               -> return $ KatFailed (show e)
        Right r                       -> return $ if r then KatSuccess else KatFailed "test failed"