async _sendSingleHandshake(id, ip, payload) {
    const req = new Request();

    req.receiveTimeout = 2000;

    req.connect(`tcp://${ip}:${this.node.config.ports.command}`);

    await req.send([topicEnum.HANDSHAKE, payload]);

    let response = null;

    try {
      [, response] = await req.receive();
    } catch (e) {
      global.kuzzle.log.warn(
        `Couldn't complete handshake with node ${id}: no response received`,
      );
    } finally {
      req.close();
    }

    return response;
  }
Sends a handshake payload to a remote node, and waits for its response

@param  {string} id      - remote node ID
@param  {string} ip      - remote node IP address
@param  {Buffer} payload - handshake payload (protobuf encoded)
@return {Object|null}    - handshake encoded response, or null if no
                           response was received