The reduce() method syntax for callbacks assigns the accumulator value followed by the currentValue, so I think the above variables should be switched.
While the previous return functioned the same (because it was calling another factorial function), it was not recursive. All credit still to ThirtyThreeB, just thought this might confuse some people and was worth fixing!