Boa tarde.
Eu já faço deste jeito.
repeat
ACBrNFe.ConsultaNFeDest(dmp.jcdsUnidadeNegociounn_ds_cnpj.AsString,
StrToIndicadorNFe(ok,'1'),
StrToIndicadorEmissor(ok,'0'),
UltNSu);
ultNSU := ACBrNFe.WebServices.ConsNFeDest.retConsNFeDest.ultNSU;
until (VarToStr(ACBrNFe.WebServices.ConsNFeDest.retConsNFeDest.indCont) = '0');
Digamos que eu tenha que fazer muitos testes para resolver um problema, o último NSU que ele retorna é inválido. NSU do tipo 15000000, depois 20000000, depois 25000000, e indCont sempre retornando 1.
Acabo ficando preso em um loop.
Interrompo a execução.
Depois de alguns minutos, eu volto a fazer a consultar exatamente com os mesmos parâmetros iniciais. Agora o ultNSU retorna um NSU válido. E por volta da 4º consulta, indCont retorna 0 e saio do loop.
Parece ser algum tipo de bloqueio da SEFAZ, mas é um bloqueio... estranho.