code: function loadRoles() {
    const roleConfigsPath = path.join(process.cwd(), plugin.config.rolesPath);
  
    // This event allows to inject code before loading all APIs
    return plugin.myrmex.fire('beforeRolesLoad')
    .then(() => {
      // Retrieve configuration path of all API specifications
      return fs.readdirAsync(roleConfigsPath);
    })
    .catch(e => {
      if (e.code === 'ENOENT' && path.basename(e.path) === 'roles') {
        return Promise.resolve([]);
      }
      return Promise.reject(e);
    })
    .then((roleConfigFiles) => {
      // Load all the role configurations
      const rolePromises = [];
      _.forEach(roleConfigFiles, (filename) => {
        const roleConfigPath = path.join(roleConfigsPath, filename);
        const roleName = path.parse(filename).name;
        rolePromises.push(loadRole(roleConfigPath, roleName));
      });
      return Promise.all(rolePromises);
    })
    .then((roles) => {
      // This event allows to inject code to add or delete or alter role configurations
      return plugin.myrmex.fire('afterRolesLoad', roles);
    })
    .spread((roles) => {
      return Promise.resolve(roles);
    });
  }
docs: [loadRoles description]
  @returns {[type]} [description]