in device/transport/amqp/src/amqp_twin_client.ts [395:440]
private _translateErrorResponse(amqpMessage: AmqpMessage): Error {
let err: AmqpTransportError;
let statusCode: number;
let errorMessage: string = 'Twin operation failed';
if (amqpMessage.message_annotations) {
statusCode = amqpMessage.message_annotations.status;
}
if (amqpMessage.body) {
errorMessage = JSON.parse(amqpMessage.body.content);
}
switch (statusCode) {
case 400:
err = new errors.FormatError(errorMessage);
break;
case 401:
err = new errors.UnauthorizedError(errorMessage);
break;
case 403:
err = new errors.InvalidOperationError(errorMessage);
break;
case 404:
err = new errors.DeviceNotFoundError(errorMessage);
break;
case 429:
err = new errors.ThrottlingError(errorMessage);
break;
case 500:
err = new errors.InternalServerError(errorMessage);
break;
case 503:
err = new errors.ServiceUnavailableError(errorMessage);
break;
case 504:
err = new errors.TimeoutError(errorMessage);
break;
default:
err = new errors.TwinRequestError(errorMessage);
}
err.amqpError = <any>amqpMessage;
return err;
}