docs: function onInclude(file, parent, lineno) {
    var p, list, config, err;
  
    file = resolve(file);
  
    // load into a separate configuration
    config = new Configuration(this.options, this);
  
    p = config._parent;
  
    while(p) {
      list = [p.getFile()].concat(Object.keys(p._includes));
      if(~list.indexOf(file)) {
        err = new ConfigError(
          lineno,
          util.format(
            'circular include reference %s <=> %s', file, p._include),
          this._file);
      }
      // have to emit on the root configuration
      if(err && !p._parent) {
        return p.emit('error', err);
      // no circular reference detected
      // should be ok to load
      }else{
        p._includes[file] = true;
      }
      p = p._parent;
    }
  
    // current file to be included
    this._include = file;
  
    try {
      // have to read synchronously to support
      // how redis deals with includes, not a big deal
      // as configuration loading is at server start up
      config.load(file);
  
      // we should have loaded ok, keep track of the include
      //this._includes[file] = true;
  
    }catch(e) {
      return this.emit('error', e);
    }
  }