function next (suite) {
    self.suite = suite;

    if (!suite) {
      self.suite = orig;
      return fn();
    }

    self.hook(name, function (err) {
      if (err) {
        var errSuite = self.suite;
        self.suite = orig;
        return fn(err, errSuite);
      }

      next(suites.pop());
    });
  }
Run hook `name` for the given array of `suites`
in order, and callback `fn(err, errSuite)`.

@api private
@param {string} name
@param {Array} suites
@param {Function} fn