If it returns something for `$authurl` but also sets `$@`, is that a case we care about? I'm not sure, but I would probably want to catch it personally.

`return { error => $@ } if defined $@ || ! defined $authurl;`