in lib/internal/Router.js [294:321]
async _affinitySend(opCode, payloadWriter, payloadReader, affinityHint) {
let connection = await this._chooseConnection(affinityHint);
while (true) {
Logger.logDebug('Endpoint chosen: ' + connection.endpoint);
try {
await connection.sendRequest(opCode, payloadWriter, payloadReader);
return;
}
catch (err) {
if (!(err instanceof Errors.LostConnectionError)) {
throw err;
}
Logger.logDebug(connection.endpoint + ' is unavailable');
this._removeConnection(connection);
if (this._getAllConnections().length == 0) {
throw new Errors.LostConnectionError('Cluster is unavailable');
}
}
connection = this._getRandomConnection();
Logger.logDebug('Node has been chosen randomly');
}
}