docs: function done(err/*, ...*/) { // function to passed as the 'this' object to each task
              if (err) return next(err); // end the chain reporting the error
              try { tasks.length ? tasks.shift().apply(funcs[0], Array.prototype.slice.call(arguments, 1)) : next.apply(this, arguments) }
              catch (ex) { next(ex) } // return any thrown exception as the argument to next()
          }