next(ctx) {
		// No items
		if (this.endpoints.length === 0) {
			return null;
		}

		// If internal (service), return the local always
		if (this.internal && this.hasLocal()) {
			return this.nextLocal();
		}

		// Only 1 item
		if (this.endpoints.length === 1) {
			// No need to select a node, return the only one
			const item = this.endpoints[0];
			if (item.isAvailable) return item;

			return null;
		}

		// Search local item
		if (this.registry.opts.preferLocal === true && this.hasLocal()) {
			const ep = this.nextLocal(ctx);
			if (ep && ep.isAvailable) return ep;
		}

		const epList = this.endpoints.filter(ep => ep.isAvailable);
		if (epList.length == 0) return null;

		return this.select(epList, ctx);
	}
Get next endpoint

@param {Context} ctx
@returns
@memberof EndpointList