docs: function SvcAws (requestedSvc, options) {
    if (this.constructor.name === 'Object') {
      throw new Error('Must be instantiated using new')
    } else if (this.constructor.name === 'SvcAws') {
      throw new Error('Abstract class ' +
        this.constructor.name + ' should not be instantiated')
    }
    EventEmitter.call(this)
    let self = this
  
    // initialize the property bag of AWS services which will be created
    this._services = {}
  
    let credOptions = Object.assign({}, options)
  
    internals.initLogger(options.isLogging)
    this.logger = internals.logger
  
    credOptions.logger = this.logger
    let credsManager = new Credentials(credOptions)
  
    credsManager.once(internals.EVENT_INITIALIZED, function (err, data) {
      if (err) {
        self.logger.warn(internals.EVENT_INITIALIZED, err)
  
        internals.emitAsync.call(self, internals.EVENT_INITIALIZED, err)
        return
      } else {
        self.logger.info(internals.EVENT_INITIALIZED, 'success')
      }
  
      if (self._services.hasOwnProperty(requestedSvc.serviceIdentifier)) {
        let serviceName = requestedSvc.serviceIdentifier
        self.logger.info('Refreshing service: ' + serviceName)
      }
  
      // Always instantiate the requested aws service, even if old one exists
      internals.newService.call(self, credsManager._awsConfig, requestedSvc)
    })
  }