in lib/eventstream_rpc.ts [1171:1200]
function throwResponseError(model: EventstreamRpcServiceModel, errorShapes: Set<string>, shapeName: string | undefined, message: eventstream.Message) : void {
if (!shapeName) {
if (message.type != eventstream.MessageType.ApplicationMessage) {
if (message.type == eventstream.MessageType.ApplicationError) {
let contentType : string | undefined = getEventStreamMessageHeaderValueAsString(message, CONTENT_TYPE_HEADER_NAME);
if (contentType && contentType === CONTENT_TYPE_PLAIN_TEXT) {
let payloadAsString : string = toUtf8(new Uint8Array(message.payload as ArrayBuffer));;
throw createRpcError(RpcErrorType.InternalError, `Eventstream (response) message was not a modelled shape. Plain text payload is: '${payloadAsString}'`);
}
}
}
throw createRpcError(RpcErrorType.InternalError, "Eventstream (response) message was not an application message");
}
let isErrorShape : boolean = errorShapes.has(shapeName);
let serviceError : any | undefined = undefined;
if (isErrorShape) {
let errorDeserializer = model.deserializers.get(shapeName);
if (errorDeserializer) {
serviceError = errorDeserializer(message);
}
}
let errorType : RpcErrorType = serviceError ? RpcErrorType.ServiceError : RpcErrorType.InternalError;
let errorDescription : string = serviceError ? "Eventstream RPC request failed. Check serviceError property for details." : `Unexpected response shape received: '${shapeName}'`
let rpcError : RpcError = createRpcError(errorType, errorDescription, undefined, serviceError);
throw rpcError;
}