listen() {
		return new this.Promise((resolve, reject) => {
			const server = net.createServer(socket => this.onTcpClientConnected(socket));

			server.on("error", err => {
				this.logger.error("Server error.", err);

				if (reject) reject(err);
			});

			let h = this.opts.port;

			// Node >= 8.x support exclusive port mapping for clustering
			if (process.versions.node.split(".")[0] >= 8)
				h = { port: this.opts.port, exclusive: true };

			// Listening
			server.listen(h, () => {
				this.opts.port = this.server.address().port;
				this.logger.info(`TCP server is listening on port ${this.opts.port}`);
				this.connected = true;

				resolve(this.opts.port);
				reject = null;
			});

			this.server = server;
		});
	}
Listening a TCP port

@returns {Promise}
@memberof TcpReader