var Tail = function() {
    this._q = [];
    this._running = false;
};

Tail.prototype = {
    run: function(fn) {
        this._q.push(fn);
        if (!this._running) {
            this._run();
        }
    },

    _run: function() {
        while(true) {
            var fn = this._q.shift();
            if (fn) {
                this._running = true;
                fn();
            } else {
                this._running = false;
                break;
            }
        }
    }
};

module.exports = new Tail();