docs: function MorayConnectionPool(args) {
      var self = this;
  
      assert.object(args, 'args');
      assert.object(args.log, 'args.log');
      assert.object(args.cueballResolver, 'args.cueballResolver');
      assert.object(args.cueballSet, 'args.cueballSet');
  
      this.mcp_log = args.log;
      this.mcp_cueball_resolver = args.cueballResolver;
      this.mcp_cueball_set = args.cueballSet;
  
      /*
       * We keep track of all connections that we know about in "mcp_conns".  This
       * includes connections available for general use for new requests,
       * connections that have been removed from service that still have pending
       * requests (because they're no longer reported in service discovery or
       * because cueball is rebalancing its connection set), and at most one
       * fallback connection.  The keys in "mcp_conns" are the cueball-provided
       * connection keys, and the values are the connections themselves.
       *
       * We separately track in "mcp_avail" the set of connections that cueball
       * considers in-service.  Keys in "mcp_avail" are cueball-provided
       * connection keys (just as with "mcp_conns"), but the values are not
       * meaningful since it's just a set.  The keys actually present in
       * "mcp_avail" are always a subset of those in "mcp_conns".
       *
       * There may be at most one connection in "mcp_conn_fallback" that has been
       * removed from general use but remains available if we have no connections
       * formally in service.  See above for details on this mechanism.  This
       * connection also appears in "mcp_conns" (like all connections that we know
       * about).
       */
      this.mcp_conns = {};    /* all connections, by key */
      this.mcp_avail = {};    /* keys for conns cueball considers in-service */
  
      /* Fallback connection information.  See above. */
      this.mcp_fallback_enable = true;    /* fallback behavior enabled */
      this.mcp_conn_fallback = null;      /* fallback connection itself */
      this.mcp_conn_fallback_time = null; /* hrtime when it was made fallback */
  
      /* Counters for debugging */
      this.mcp_nalloc_ok = 0;         /* successful allocations */
      this.mcp_nalloc_fail = 0;       /* failed allocations */
      this.mcp_nalloc_fallback = 0;   /* allocations of a fallback conn */
      this.mcp_nreleased = 0;         /* releases */
      this.mcp_nfallbacks = 0;        /* assigned a conn as fallback */
  
      this.mcp_cueball_set.on('added', function onConnectionAdd(key, conn, hdl) {
          self.connAdd(key, conn, hdl);
      });
  
      this.mcp_cueball_set.on('removed', function onConnectionRemoved(key) {
          self.connRetire(key);
      });
  }