loadNextPage
Requests the next page and appends it to state.
Safe to call more than once: a request already in flight, or a list already at its end, makes this a no-op, so driving it from a scroll listener needs no guard of your own. A page that fails leaves the items already loaded in place and reports the error on PaginatedLoadStates.append — call this again to retry. When the network fails but a copy of the page is cached, that copy is appended instead and no error is reported.