

function tail() {
  tail._tail(tail.caller, arguments, 0);
}

tail.sleep = function sleep()
{
  var timeout = Array.prototype.shift.call(arguments); 
  tail._tail(sleep.caller, arguments, timeout);
};

tail._tail = function(fn, args, timeout)
{
  setTimeout(function() {fn.apply(null, args)}, timeout);
}




