code: function Listener(options) {
      var self = this;
  
      mod_assert.object(options, 'options');
      mod_assert.object(options.log, 'options.log');
      mod_assert.string(options.instance, 'options.instance');
      mod_assert.string(options.service, 'options.service');
      mod_assert.object(options.changeKind, 'options.changeKind');
      mod_assert.string(
          options.changeKind.resource,
          'options.changeKind.resource');
      mod_assert.arrayOfString(
          options.changeKind.subResources,
          'options.changeKind.subResources');
  
      Readable.call(self, { objectMode: true });
  
      // retain backwards compatibility w/ non restify-clients listeners
      if (options.endpoint && options.port) {
          self.url = sprintf(HTTP_MODIFIER, options.endpoint);
          if (options.port !== 80) {
              self.url += sprintf(PORT_MODIFIER, options.port);
          }
      } else {
          mod_assert.string(options.url, 'options.url');
          self.url = options.url;
      }
  
  
      self.log = options.log;
      self.instance = options.instance;
      self.service = options.service;
      self.changeKind = options.changeKind;
      self.backoff_opts = options.backoff;
  
      self.closed = false;
      self.initBootstrap = false;
  }
docs: /*
  Listener module constructor that takes an options object.
  
  Example options object:
  var options = {
  backoff: {
  maxTimeout: Infinity,
  minTimeout: 10,
  retries: Infinity
  },
  log: new mod_bunyan({
  name: 'my_logger',
  level: 'info',
  stream: process.stderr
  }),
  url: 'http://127.0.0.1',
  instance: '<UUID>',
  service: '<service name>',
  changeKind: {
  resource: '<resource name>',
  subResources: ['subresource1', 'subresource2']
  }
  };