always :: IO a -> IO () -> IO a
always io action = do
  x <- io `catchComException` (\ e -> action >> throwIOComException e)
  action
  return x
always :: IO a -> IO () -> IO a
always io action = do
  x <- io `catchComException` (\ e -> action >> throwIOComException e)
  action
  return x
always io action = do
  x <- io `catchComException` (\ e -> action >> throwIOComException e)
  action
  return x