Enriquecendo sua solução

Uma vez resolvido o problema principal, você pode realizar modificações em seu programa para que ele atenda a aoutras expectativas ou "caprichos" pessoais.

[EXEMPLO] Retomando o exemplo anterior, poderíamos...

...fazer aplicação/uso das funções diretamente no console:

console.log(fsoma(fareaRet(6.1,4.4),fareaEli(3.0,5.3)))

... fazer inicialização de parâmetros na definição da função...

function fareaEli(x, y, pi=3.14) { 
    //const pi = 3.1415
    return pi*x*y
}

...e omitir o argumento pi na aplicação/uso...

console.log(fsoma(fareaRet(6.1,4.4),fareaEli(3.0,5.3)))

... OU incluir novo valor de pi na aplicação/uso:

console.log(fsoma(fareaRet(6.1,4.4),fareaEli(3.0,5.3,3.14159265)))

Finalmente, poderíamos compor texto para ajudar o usuário a entender a saída do programa:

const textoRet = `retângulo de lados ${l1} e ${l2}`
const textoEli = `elipse de raios ${r1} e ${r2}`
const textArea = `A soma das áreas de um ${textoRet} e de uma ${textoEli} é igual a ${resultado}.`
console.log(textArea)