async _finalizeResponse()

in src/internal/ClientSocket.ts [352:391]


    async _finalizeResponse(buffer: MessageBuffer, request: Request) {
        let statusCode, isSuccess;

        if (this._protocolVersion.compareTo(PROTOCOL_VERSION_1_4_0) < 0) {
            // Check status code
            statusCode = buffer.readInteger();
            isSuccess = statusCode === REQUEST_SUCCESS_STATUS_CODE;
        }
        else {
            // Check flags
            let flags = buffer.readShort();
            isSuccess = !(flags & FLAG_ERROR);

            if (flags & FLAG_TOPOLOGY_CHANGED) {
                const newVersion = new AffinityTopologyVersion(buffer);
                await this._onAffinityTopologyChange(newVersion);
            }

            if (!isSuccess) {
                statusCode = buffer.readInteger();
            }
        }

        if (!isSuccess) {
            // Error message
            const errMessage = BinaryCommunicator.readString(buffer);
            request.reject(new OperationError(errMessage));
        }
        else {
            try {
                if (request.payloadReader) {
                    await request.payloadReader(buffer);
                }
                request.resolve();
            }
            catch (err) {
                request.reject(err);
            }
        }
    }