JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore-min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min.js"></script>

JavaScript

var Test = Backbone.Model.extend({

    startPolling: function() {
        this.polling = true;
        this.minutes = 2;

        var self = this;
        var executePolling = function() {
            console.log('execute!');
            setTimeout(onFetch, 500);
        };

        var onFetch = function() {
            if (self.isPolling()) {
                console.log('success!');
                setTimeout(executePolling, 500);
            }
        };

        console.log('starting polling!');
        executePolling();
        setTimeout(this.stopPolling, 5000);
    },

    stopPolling: function() {
        this.polling = false;
        console.log('stopped polling!');
    },

    isPolling: function() {
        console.log(this.polling);
        return this.polling;
    }

});

var model = new Test();
model.startPolling();