Faltou a lógica nos casos em que o resto da divisão para verificação dos dígitos resulta em 10 ou 11. Nestes cados o resto se torna 0, para verificar corretamente os dígitos. Abaixo, coloquei a function corrigida comentada na linha adicionada.
function verificaDigito(cpf, totalDeDigitos, peso, digitoDeVerificacao) {
let soma = sommaNumeroCPF(cpf, totalDeDigitos, peso);
let resto = (soma * 10) % 11;
if (resto === 10 || resto === 11) resto = 0; /*adicionei esta linha para completar a lógica.*/
return resto === digitoDeVerificacao;
}