I don’t know how simple this can be made so the best thing to do is
make it clean, as you say. I have used Data::Page to
manage this in search results. It’s built-in for DBIx::Class::ResultSet->pager but you can wrangle it manually for anything. It’s not automatic for your case, you have to do all the plugging in of the data and wrapping the requests, but it is semantic and clear/clean to use the actual paging objects.
This may just be one of those spaces that is variable enough, har-har, to elude easy encapsulation/automation. Regarding hitting the max amount of data REST::Client will accept, RC->isa("LWP::UserAgent") (<- update, double checked that’s not right, the top level object has a UA, it isn’t inheriting from it) so it has no inherent limit unless you set $client->max_size(…). If there is another way to check on why it’s bottoming out, there might be a way around it.