There was a bug in the data returned by the server – on every page but the first, there was an initial comma in the list of row data. (server originally returned all data; when it was converted to only return the N rows for the page, this condition was missed.)
It would be nice if invalid data threw some kind of error to make it more obvious where things break down.
With the bugfix in place, the paging/sorting works great.