function StateQueue() { this.queue = [] } StateQueue.prototype.next = function() { return this.queue.shift() } StateQueue.prototype.empty = function() { return this.queue.length === 0 } StateQueue.prototype.push = function(state) { var found = false // Not super efficient, but this shouldn't be running all the time anyway. for (var i = 0, l = this.queue.length; i < l; ++i) { if (this.queue[i] === state) { this.queue.splice(i + 1) found = true break } } if (!found) { this.queue.push(state) } } module.exports = StateQueue