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);
}
}
}