Endpoint retornando apenas 1 vez a description de um erro

Estava testando requisições simulando erros a um endpoint para checar os retornos. Percebi que o mesmo retorna sempre 1 vez o erro correto, por exemplo:

O CNPJ informado já foi utilizado no cliente …

E depois ao simular novamente ele retorna erro 500:

{“code”:500,“message”:“Internal Server Error”}.

Sempre nessa sequencia, retorna o erro corretamente e depois da erro 500 sem eu ter alterado nenhuma propriedade do json.

O log salvo em uma pasta no sftp está sempre com as descrições corretas, mas quando solicito via postman retorna 500.

Código utilizado:

#include ‘totvs.ch’
#include ‘tlpp-core.th’
#include ‘tlpp-rest.th’

class PostCliCashUp

public method new() constructor


@post(endpoint ='/postcli', description= 'Inclusão de clientes no ERP')
public method incluir_clientes() as logical

end class

method new() class PostCliCashUp ;return self
method incluir_clientes() class PostCliCashUp

local lRPC as logical
local lAtivAmb as logical
local jBodyReq as json
local aCabec as array
local nOpc as numeric
LOCAL jResp as json

Private lMsErroAuto as logical

If Select("SX2") == 0
	RPCClearEnv()
	RpcSetType( 3 )
	RpcSetEnv( "01",'020101', , , "",,, , , ,  )
	lAtivAmb := .T. // Seta se precisou montar o ambiente
Endif

try

	jBodyReq := jsonObject():new()
	jBodyReq:fromJson(oRest:getBodyRequest())

	cCgc        := jBodyReq['CNPJ_CPF']
	cCod        := jBodyReq['CODIGO']
	cPessoa     := jBodyReq['PESSOA']
	cLoja       := jBodyReq['LOJA']
	cNome       := jBodyReq['NOME']
	cFantasia   := jBodyReq['FANTASIA']
	cEndereco   := jBodyReq['ENDERECO']
	cBairro     := jBodyReq['BAIRRO']
	cTipo       := jBodyReq['TIPO']
	cEstado     := jBodyReq['ESTADO']
	cMun  		:= jBodyReq['COD_MUN']
	cCep   		:= jBodyReq['CEP']
	cInsMun     := jBodyReq['INS_MUN']
	cInsEst     := jBodyReq['INS_EST']
	cPais       := jBodyReq['PAIS']
	cEmail      := jBodyReq['EMAIL']
	cContaC     := jBodyReq['CONTA_CONTABIL']
	cBolEmail	:= jBodyReq['BOLETO_EMAIL']
	cDda		:= jBodyReq['USA_DDA']
	cRisco		:= jBodyReq['RISCO']
	nLimCre		:= jBodyReq['LIM_CREDITO']
	cVenc		:= jBodyReq['VENC_LIM_CREDITO']
	cStatus		:= jBodyReq['STATUS']
	cBacen		:= jBodyReq['PAIS_BACEN']
	cCondpag	:= jBodyReq['COND_PAG']
	cConta	:= jBodyReq['COND_PAG']
	

	aCabec := {}
	aCabec := {{"A1_CGC", cCgc, Nil},;
		{"A1_COD", cCod, Nil},;
		{"A1_PESSOA", cPessoa, Nil},;
		{"A1_LOJA", cLoja, Nil},;
		{"A1_NOME", cNome, Nil},;
		{"A1_NREDUZ", cFantasia, Nil},;
		{"A1_END",cEndereco, Nil},;
		{"A1_BAIRRO",cBairro, Nil},;
		{"A1_TIPO", cTipo, Nil},;
		{"A1_EST", cEstado, Nil},;
		{"A1_COD_MUN",cMun, Nil},;
		{"A1_CEP",cCep, Nil},;
		{"A1_INSCRM", cInsMun, Nil},;
		{"A1_INSCR", cInsEst, Nil},;
		{"A1_PAIS", cPais, Nil},;
		{"A1_EMAIL", cEmail, Nil},;
		{"A1_CONTA", cContaC, Nil},;
		{"A1_BLEMAIL", cBolEmail, Nil},;
		{"A1_USADDA", cDda, Nil},;
		{"A1_RISCO", cRisco, Nil},;
		{"A1_LC", nLimCre, Nil},;
		{"A1_VENCLC", Stod(cVenc), Nil},;
		{"A1_MSBLQL", cStatus, Nil},;
		{"A1_CODPAIS", cBacen, Nil},;
		{"A1_COND", cCondpag, Nil}}

	nOpc        := 3

	lMsErroAuto := .F.
	MsExecAuto({|a, b| CRMA980(a, b)},aCabec, nOpc)

	IF lMsErroAuto
		mostraErro('\data\','erro_sa1.txt')
		cError := memoread('\data\erro_sa1.txt')

		err             := errorClass():new()
        err:description := cError

		throw err

	EndIF

	jResp             := jsonObject():new()
	jResp['STATUS'] := 'CLIENTE INCLUIDO COM SUCESSO!!'

	oRest:setResponse(jResp:toJson())

catch err

	cError := err:description

	jResp           := jsonObject():new()
	jResp['error']  := cError

	oRest:setFault(jResp:toJson())

endtry

IF lRPC
	rpcCLearEnv()
EndIF

return .T.