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)`.

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