Função JS Curry com recursão

Leia antes de marcá-lo como duplicado.

Não estou pedindo uma única chamada de curry.

Esta função multiplica, multiplicação (4,4,4) // 64

function multiplication(...args) {

    return args.reduce((accum, val) => accum * val, 1)
}

Mas Estou tentando conseguir outra coisa ...

Essa mesma função deve multiplicar também os parênteses da função curry. por exemplo.

/*
  which return the multiplication of three numbers.
  The function can be called in any of the following forms:

  multiply(2, 3)(4) => 24
  multiply(2)(3, 4) => 24
  multiply(2)(3)(4) => 24
  multiply(2, 3, 4) => 24
*/

Por favor, ajude.

Depois de mexer em muito código e ler algumas respostas da pilha. Finalmente eu vim com. Mas ainda não satisfaz issomultiply(2)(3, 4) => 24

Mas funciona bem para o resto dos casos

multiply(2,3,4)
multiply(2,3)(4)
multiply(2)(3)(4)

var multiply = function(...args) {
    if (args.length === 3) {
        return args[0] * args[1] * args[2];
    } else {
        return function() {
            args.push([].slice.call(arguments).pop());
            return multiply.apply(this, args);
        };
    }
}

enquantomultiply(2)(3, 4) => 24 fail

questionAnswers(5)

yourAnswerToTheQuestion