code: function(tasks) {
  		var l = tasks.length,
  			chain = function(task, idx) {
  				++idx;
  				if (tasks[idx]) {
  					return chain(task.then(tasks[idx]), idx);
  				} else {
  					return task;
  				}
  			};
  		if (l > 1) {
  			return chain(tasks[0](), 0);
  		} else {
  			return tasks[0]();
  		}
  	}
docs: call chained sequence of async deferred functions
  
  @param  Array   tasks async functions
  @return Object  jQuery.Deferred