node.js – MELHOR JEITO DE IDENTIFICAR CPF E CNPJ de forma rápida em JavaScript?

Estou iniciando este código para tentar identificar se é CPF ou CNPJ e já retornar a mascara, antes de validar, porem não estou conseguindo incluir a validação, tentantado promise.resolve(Valida(number, type)) mas o retorno fica em <promise>, alguma sugestão?

function cpfcnpj (doc) => {
    let valid = false,
        number = doc.toString().replace(/D/g, ''),
        masked = false,
        type = number.length === 11 ? 'CPF' : number.length === 14 ? 'CNPJ' : false


    if (type === 'CPF') {
        masked = number.replace(/(d{3})(d{3})(d{3})(d{2})/, "$1.$2.$3-$4")
    }

    if (type === 'CNPJ') {
        masked = number.replace(/^(d{2})(d{3})(d{3})(d{4})(d{2})/, "$1.$2.$3/$4-$5")
    }

    return {
        type: type,
        valid: Promise.resolve(Valida(number, type)).then(valid => { return valid}),
        number: number,
        masked: masked
    }

function TestaCPF(strCPF) {
}

}

console.log(cpfcnpj('123.456.789-01'));
console.log(cpfcnpj('123 456 789@12'));
console.log(cpfcnpj('11.911.119/0001-9'));
console.log(cpfcnpj('11.9s11.1d19%0001&9'));

RETORNO:


{
  type: 'CPF',
  valid: Promise { <pending> },
  number: '12345678901',
  masked: '123.456.789-01'
}
{
  type: 'CPF',
  valid: Promise { <pending> },
  number: '12345678912',
  masked: '123.456.789-12'
}
{
  type: false,
  valid: Promise { <pending> },
  number: '1191111900019',
  masked: false
}
{
  type: false,
  valid: Promise { <pending> },
  number: '1191111900019',
  masked: false
}