code: function RingpopClient(ringpop, subChannel, timers, date, middlewares) {
      this.ringpop = ringpop;
      this.subChannel = subChannel;
      this.timers = timers || globalTimers;
      this.date = date || Date;
      this.middlewares = middlewares || [];
  
      this.config = this.ringpop.config;
      this.logger = this.ringpop.loggerFactory.getLogger('client');
  
      // If no subChannel provided, create one from a new instance
      // of TChannel. This client then becomes the owner of that
      // instance and is responsible for closing.
      this.isChannelOwner = false;
      if (!this.subChannel) {
          this.tchannel = new TChannel();
          this.subChannel = this.tchannel.makeSubChannel({
              serviceName: 'ringpop',
              trace: false
          });
          this.isChannelOwner = true;
      }
  
      this.requestsById = {};
      this.wedgedTimer = null;
      this.isDestroyed = false;
  }
docs: /* jshint maxparams: 5