replaced use of `arguments.callee` by a  named function (fixes jslint,, and is ECMAScript 5′s strict mode compliant)