docs: function series(tasks) {
      if (tasks == null) return promisen([]);
      var stack = [];
      var result = [];
      tasks = Array.prototype.map.call(tasks, wrap);
      tasks = waterfall(tasks);
      return waterfall([push(stack), tasks, result]);
  
      // apply the first argument only. ignore rest.
      function wrap(task) {
        return waterfall([top(stack), task, push(result)]);
      }
    }