code: function Embedza(options) {
    debug('init');
  
    this.__options__ = _.merge({
      enabledProviders: true,
      cache: new Cache(),
      // Default options for `got` in `.request()` method
      request: {
        retries: 1,         // Default (5) hangs too long
        timeout: 15 * 1000,
        headers: {
          'user-agent': defaultAgent
        }
      }
    }, options);
  
    this.templates = _.clone(templates);
  
    // User will request `inline` or `block` content form renderer.
    // Create alias for names match
    this.aliases = {
      block: [ 'player', 'rich' ]
    };
  
    this.__fetchers__ = {};
    this.__mixins__ = {};
    this.__mixinsAfter__ = {};
    this.__domains__ = [];
  
    // Domains config cache
    this.__rulesCache__ = null;
  
    // Init plugins
  
    fetchers.forEach(fetcher => this.addFetcher(fetcher));
    mixins.forEach(mixin => this.addMixin(mixin));
    mixinsAfter.forEach(mixinAfter => this.addMixinAfter(mixinAfter));
    domains.forEach(domain => this.addDomain(domain));
  
    // Deactivate some providers if needed
    if (_.isArray(this.__options__.enabledProviders)) {
  
      // Disable all first
      this.forEach(domain => { domain.enabled = false; });
  
      // Enable required and add missing providers
      this.__options__.enabledProviders.forEach(domain => {
        if (!this.__domains__[domain]) {
          this.addDomain(domain);
        } else {
          this.__domains__[domain].enabled = true;
        }
      });
    }
  
    debug('init: done');
  }
docs: Create Embedza instance  options:  - enabledProviders ([String]|Boolean) - optional, array of enabled providers or `true` for all providers, default `true` - cache (Cache) - optional, custom cache class, default `new Cache()` - request - default options for `got` in `.request()` method