select(list) {
		let minEp = null;
		let minLatency = null;

		const sampleCount = this.opts.sampleCount;
		const count = sampleCount <= 0 || sampleCount > list.length ? list.length : sampleCount;
		for (let i = 0; i < count; i++) {
			let ep;
			// Get random endpoint
			if (count == list.length) {
				ep = list[i];
			} else {
				/* istanbul ignore next */
				ep = list[random(0, list.length - 1)];
			}
			const epLatency = this.hostAvgLatency.get(ep.node.hostname);

			// Check latency of endpoint
			if (typeof epLatency !== "undefined") {
				if (epLatency < this.opts.lowLatency) return ep;

				if (!minEp || !minLatency || epLatency < minLatency) {
					minLatency = epLatency;
					minEp = ep;
				}
			}
		}

		// Return the lowest latency
		if (minEp) {
			return minEp;
		}

		// Return a random item (no latency data)
		return list[random(0, list.length - 1)];
	}
Select an endpoint by network latency

@param {Array<Endpoint>} list
@returns {Endpoint}
@memberof LatencyStrategy