connect(nodeID) {
		const node = this.transporter.getNode(nodeID);
		if (!node)
			return this.Promise.reject(new MoleculerError(`Missing node info for '${nodeID}'!`));

		const host = this.transporter.getNodeAddress(node);
		const port = node.port;

		this.logger.debug(`Connecting to '${nodeID}' via ${host}:${port}`);

		return new this.Promise((resolve, reject) => {
			try {
				const socket = net.connect({ host, port }, () => {
					socket.nodeID = nodeID;
					socket.lastUsed = Date.now();

					socket.setNoDelay(true);

					this.addSocket(nodeID, socket, true);

					this.logger.debug(`Connected successfully to '${nodeID}'.`);

					// Handle racing problem, we send first a HELLO packet with our connection info
					this.transporter
						.sendHello(nodeID)
						.then(() => resolve(socket))
						.catch(err => reject(err));

					if (this.sockets.size > this.opts.maxConnections) this.manageConnections();
				});

				socket.on("error", err => {
					this.removeSocket(nodeID);
					this.emit("error", err, nodeID);

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

				socket.on("end", () => {
					this.removeSocket(nodeID);
					this.emit("end", nodeID);

					if (reject) reject(new Error("Connection closed"));
				});

				socket.unref();
			} catch (err) {
				if (reject) reject(err);
			}
		});
	}
Connect to a remote node

@param {String} nodeID