async validateMessage(message) {
    if (!has(message, "messageId")) {
      global.kuzzle.log.warn(
        `Invalid message received from node ${this.remoteNodeId}. Evicting it.`,
      );

      await this.evictNode({
        broadcast: true,
        reason: 'invalid message received (missing "messageId" field)',
      });

      return false;
    }

    if (
      this.state === stateEnum.BUFFERING &&
      this.lastMessageId.greaterThanOrEqual(message.messageId)
    ) {
      return false;
    }

    this.lastMessageId = this.lastMessageId.add(1);

    if (this.lastMessageId.notEquals(message.messageId)) {
      await this.localNode.evictSelf(
        `Node out-of-sync: ${
          message.messageId - this.lastMessageId - 1
        } messages lost from node ${this.remoteNodeId}`,
      );
      return false;
    }

    return true;
  }
Checks that the received message is the one we expect.
@param  {Object} message - decoded protobuf message
@return {boolean} false: the message must be discarded, true otherwise