Olá. Está tudo dando certo aqui em termos de busca do cep pela API. Porém quando coloco um numero aleatório (no formato correto), ele demora para dar a resposta. Muito mais do que demora pra fazer a solicitação. O "erro: true" aparece instantaneamente no console, porém a resposta aparece apenas se eu saio do campo, volto ao campo, e saio dele novamente.
Segue o código:
function recuperaCEP (input){
    const cep = input.value.replace(/\D/g, '')
    const url = `https://viacep.com.br/ws/${cep}/json/` // essa interpolação da variável cep dentro do template literas vai puxar sempre o cpf certo.
    const options = {
        method: 'GET', // quer dizer que vou puxar informações da API
        mode: 'cors',
        headers: {
            'content-type': 'application/json;charset=utf-8'
        }
    }
    //antes de fazer o fetch em si, precisamos fazer a validação, para nao ficar fazendo requisições a toa
    //são colocadas essas negações porque essas condições são os erros, então se estiver "false", é pq está tudo certo e podemos pedir a requisição
    if(!input.validity.patternMismatch && !input.validity.valueMissing){
        fetch(url, options)
        .then(
            response => response.json()
        ).then(
            data => {
                //vou tratar o erro, se a pessoa colocar um cep no formato correto, porém a requisição não encontrou um match lá na API, e então nos retornou um "erro = true"
                console.log(data)
                if(data.erro){
                    input.setCustomValidity('CEP não encontrado, verifique o número.')
                    return // concluindo o Fetch
                }
                input.setCustomValidity('') // setCustomValidity com string vazio quer dizer que esta OK!
            }
        )
    }Desde já, valeu!