I'm trying to scrape for a webpage using Haskell and compile the results into an object. 

If, for whatever reason, I can't get all the items from the pages, I want to stop trying to process the page and return early. 

For example:

```
scrapePage :: String -> IO ()
scrapePage url = do
  doc <- fromUrl url
  title <- liftM headMay $ runX $ doc >>> css "head.title" >>> getText
  when (isNothing title) (return ())
  date <- liftM headMay $ runX $ doc >>> css "span.dateTime" ! "data-utc"
  when (isNothing date) (return ())
  -- etc
  -- make page object and send it to db
  return ()

```

The problem is the `when` doesn't stop the do block or keep the other parts from being executed. 

What is the right way to do this?