Haskell timeout HTTP GET and JSON decode

Haskell
import Control.Exception (SomeException, try)
import Data.Aeson (Value, eitherDecode')
import Network.HTTP.Simple (getResponseBody, httpLbs, parseRequest)
import System.Timeout (timeout)

fetchJson :: Int -> String -> IO (Either String Value)
fetchJson micros url = do
  outcome <- try $ timeout micros $ do
    request <- parseRequest url
    getResponseBody <$> httpLbs request
  pure $ case outcome of
    Left err -> Left (show (err :: SomeException))
    Right Nothing -> Left "request timed out"
    Right (Just body) -> eitherDecode' body