function FUNC1(cb){
console.log("1");
setTimeout(function(){console.log("2")}, 250);
setTimeout(function() {
console.log("3");
cb();
}, 500);
}
function FUNC2(cb){
console.log("4");
setTimeout(function(){console.log("5")},350);
setTimeout(function(){
console.log("6");
cb();
}, 600);
}
queue = [];
queue.push(FUNC1);
queue.push(FUNC2);
(function processQueue(queue) {
if (queue.length) {
queue.shift(0)(processQueue.bind(null, queue));
}
}(queue));
ZnVuY3Rpb24gRlVOQzEoY2IpewoJY29uc29sZS5sb2coIjEiKTsKCXNldFRpbWVvdXQoZnVuY3Rpb24oKXtjb25zb2xlLmxvZygiMiIpfSwgMjUwKTsKCXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CgkJY29uc29sZS5sb2coIjMiKTsKCQljYigpOwoJfSwgNTAwKTsKfQoKCmZ1bmN0aW9uIEZVTkMyKGNiKXsKCWNvbnNvbGUubG9nKCI0Iik7CglzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Y29uc29sZS5sb2coIjUiKX0sMzUwKTsKCXNldFRpbWVvdXQoZnVuY3Rpb24oKXsKCQljb25zb2xlLmxvZygiNiIpOwoJCWNiKCk7Cgl9LCA2MDApOwp9CgpxdWV1ZSA9IFtdOwpxdWV1ZS5wdXNoKEZVTkMxKTsKcXVldWUucHVzaChGVU5DMik7CgooZnVuY3Rpb24gcHJvY2Vzc1F1ZXVlKHF1ZXVlKSB7CglpZiAocXVldWUubGVuZ3RoKSB7CgkJcXVldWUuc2hpZnQoMCkocHJvY2Vzc1F1ZXVlLmJpbmQobnVsbCwgcXVldWUpKTsKCX0KfShxdWV1ZSkpOw==