docs: function parallel(tasks) {
      if (tasks == null) return promisen([]);
      tasks = Array.prototype.map.call(tasks, wrap);
      return all;
  
      function all(value) {
        var boundTasks = Array.prototype.map.call(tasks, run.bind(this, value));
        return promisen.Promise.all(boundTasks);
      }
  
      // apply the first argument only. ignore rest.
      function wrap(task) {
        return promisen(task);
      }
  
      function run(value, func) {
        return func.call(this, value);
      }
    }