Haskell's concurrency has those features! The Async library contains high level combinators for concurrency that are particularly nice to use.
(page1, page2) <- concurrently (getURL url1) (getURL url2)
https://hackage.haskell.org/package/async-2.2.3/docs/Control...