RxJS Recursive Page Loading Observer

Nohting more to say...

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/2.3.14/rx.all.js"></script>
<script src="https://rawgit.com/trevershick/6d9364085a1e566b2e18/raw/console.js"></script>

JavaScript

var i=0;

var ajaxResponse = function (observer) {
    observer.onNext(i++);
};

var source = Rx.Observable.create(function (observer) {

    var nextPage=function(obs, index) {
        console.log("Load page " + index);
        var p = $.ajax({dataType: "json",
                url: "https://s3.amazonaws.com/trevershick-experiments/BB96vEK"}).promise();

        Rx.Observable.fromPromise(p)
            .map(function (x){return x.QueryResult;})
            .pluck('Results')
            .subscribe(function(d) {
                obs.onNext(d);
                if (i >= 3) {
                    obs.onCompleted();
                } else {
                    i++;
                    console.log("Starting next page load");
                    nextPage(obs, i); 
                }
        });        
    };
    nextPage(observer, i);
    
});

var subscription = source.subscribe(
    function (x) {
        console.log("results " + x);
    },
    function (err) {
        console.log('Error: ' + err);
    },
    function () {
        console.log('Completed');
        subscription.dispose();
    });

// => Next: 42
// => Completed