note about losing context with arguments.callee in a recursed function