During the performance testing for #2 , it was discovered that very large factorial calculations using the current method of recursion can cause the call stack size to be exceeded.
A Stack Overflow answer suggests this can be fixed by wrapping the recursive function call in a setImmediate function.
It's not yet known at exactly what size factorial calculation the maximum call stack size will be exceeded.