The task is handy for cancellation. You need some handle to the operation to do that.

The request does often feel like overkill when you just need a URL and a GET, but it gets more handy in more complex cases. And it's useful to be able to validate you built the request correctly independently of dispatching it when testing.

In practice, if I'm making URL requests from the middle of something not all about that, I'm doing something wrong, so all the Web integration gets pushed to the edges and out of sight.