constructor(opts) {
		if (typeof opts === "string") opts = { etcd: { hosts: opts.replace(/etcd3:\/\//g, "") } };

		super(opts);

		this.opts = _.defaultsDeep(this.opts, {
			etcd: undefined,
			serializer: "JSON",
			fullCheck: 10 // Disable with `0` or `null`
		});

		// Loop counter for full checks. Starts from a random value for better distribution
		this.idx = this.opts.fullCheck > 1 ? randomInt(this.opts.fullCheck - 1) : 0;

		// Etcd client instance
		this.client = null;

		// Last sequence numbers
		this.lastInfoSeq = 0;
		this.lastBeatSeq = 0;

		// Leases
		this.leaseBeat = null;
		this.leaseInfo = null;
	}
Creates an instance of Discoverer.

TODO:
	- the etcd3 lib has no reconnection logic

@memberof Etcd3Discoverer