I'm not expert in curl, nor even http client coding, so I just checked the curl(1) man page on my system, it says:
-L, --location (HTTP) If the server reports that the requested page has moved to a different location (indicated with a Location: header and a 3XX response code), this option will make curl redo the request on the new place. If used together with -i, --include or -I, --head, headers from all requested pages will be shown. When authentication is used, curl only sends its credentials to the initial host. If a redirect takes curl to a different host, it won't be able to intercept the user+password. See also --location- trusted on how to change this. You can limit the amount of redirects to follow by using the --max-redirs option. If this hasn't already been done in perl6 natively, it might be nicest to just invoke curl. It depends on your goal. If you want to expand the perl6 ecosystem, that'd be great. But if you just want to get the job done, there are advantages to just invoking curl; web standards evolve really fast, and curl is pretty actively maintained as far as I know (it's been a little while since I was actively tracking curl development).