code: function connectServers(topology, serverDescriptions) {
    topology.s.servers = serverDescriptions.reduce((servers, serverDescription) => {
      // publish an open event for each ServerDescription created
      topology.emit(
        'serverOpening',
        new monitoring.ServerOpeningEvent(topology.s.id, serverDescription.address)
      );
  
      const server = new Server(serverDescription, topology.s.options);
      relayEvents(server, topology, [
        'serverHeartbeatStarted',
        'serverHeartbeatSucceeded',
        'serverHeartbeatFailed'
      ]);
  
      server.on('descriptionReceived', topology.serverUpdateHandler.bind(topology));
      server.on('connect', serverConnectEventHandler(server, topology));
      servers.set(serverDescription.address, server);
      server.connect();
      return servers;
    }, new Map());
  }
docs: Create `Server` instances for all initially known servers, connect them, and assign
  them to the passed in `Topology`.
  
  @param {Topology} topology The topology responsible for the servers
  @param {ServerDescription[]} serverDescriptions A list of server descriptions to connect