Factoring paged querying out into a channel based return and a full dataset return
Factoring out data handling to a ClientData struct to simplify the case handling