This part is the most critical change. The request needs to happen in a way such that

1. Any uncaught errors in the promise chain needs to stop infiniteloading. This is guaranteed by infinitescroll's implementation as long as we let an error propagate through the chain.
2. Both `loaded` and `_trackState` need access to the ajax response in its original unmodified state.
3. InfiniteLoader instance only fires lifetime events based on what happens in the user-controlled chain. Nobody outside InfiniteLoader should be alerted to an error thrown by `_trackState`