_handleIncomingResponseStream(packet, req) {
		let pass = this.pendingResStreams.get(packet.id);
		if (!pass && !packet.stream && !packet.seq) return false;

		if (!pass) {
			this.logger.debug(
				`<= New stream is received from '${packet.sender}'. Seq: ${packet.seq}`
			);

			pass = new Transform({
				// TODO: It's incorrect because the chunks may receive in random order, so it processes an empty meta.
				// Meta is filled correctly only in the 0. chunk.
				objectMode: packet.meta && packet.meta["$streamObjectMode"],
				transform: function (chunk, encoding, done) {
					this.push(chunk);
					return done();
				}
			});

			pass.$prevSeq = -1;
			pass.$pool = new Map();

			this.pendingResStreams.set(packet.id, pass);
		}

		if (packet.seq > pass.$prevSeq + 1) {
			// Some chunks are late. Store these chunks.
			this.logger.debug(
				`Put the chunk into pool (size: ${pass.$pool.size}). Seq: ${packet.seq}`
			);

			pass.$pool.set(packet.seq, packet);

			// TODO: start timer.
			// TODO: check length of pool.
			// TODO: resetting seq.

			return true;
		}

		// the next stream chunk received
		pass.$prevSeq = packet.seq;

		if (pass && packet.seq == 0) {
			req.resolve(pass);
		}

		if (pass.$prevSeq > 0) {
			if (!packet.stream) {
				// Received error?
				if (!packet.success)
					pass.emit("error", this._createErrFromPayload(packet.error, packet));

				this.logger.debug(
					`<= Stream closing is received from '${packet.sender}'. Seq: ${packet.seq}`
				);

				// End of stream
				pass.end();

				// Remove pending request
				this.removePendingRequest(packet.id);

				return true;
			} else {
				// stream chunk
				this.logger.debug(
					`<= Stream chunk is received from '${packet.sender}'. Seq: ${packet.seq}`
				);
				pass.write(
					packet.data.type === "Buffer" ? Buffer.from(packet.data.data) : packet.data
				);
			}
		}

		// Check newer chunks in the pool
		if (pass.$pool.size > 0) {
			this.logger.debug(`Has stored packets. Size: ${pass.$pool.size}`);
			const nextSeq = pass.$prevSeq + 1;
			const nextPacket = pass.$pool.get(nextSeq);
			if (nextPacket) {
				pass.$pool.delete(nextSeq);
				setImmediate(() => this.responseHandler(nextPacket));
			}
		}

		return true;
	}
Handle incoming response stream.

@param {Object} packet
@param {Object} req