_handleMessage()

in src/firefox/rdp-client.js [188:227]


  _handleMessage(rdpData) {
    if (rdpData.from == null) {
      if (rdpData.error) {
        this.emit('rdp-error', rdpData);
        return;
      }

      this.emit(
        'error',
        new Error(
          `Received an RDP message without a sender actor: ${JSON.stringify(
            rdpData,
          )}`,
        ),
      );
      return;
    }

    if (UNSOLICITED_EVENTS.has(rdpData.type)) {
      this.emit('unsolicited-event', rdpData);
      return;
    }

    if (this._active.has(rdpData.from)) {
      const deferred = this._active.get(rdpData.from);
      this._active.delete(rdpData.from);
      if (rdpData.error) {
        deferred?.reject(rdpData);
      } else {
        deferred?.resolve(rdpData);
      }
      this._flushPendingRequests();
      return;
    }

    this.emit(
      'error',
      new Error(`Unexpected RDP message received: ${JSON.stringify(rdpData)}`),
    );
  }