libs/shoestring-dev.js
function recordProxy( old, name ) {
			return function() {
				var tracked;
				try {
					tracked = JSON.parse(window.localStorage.getItem( shoestring.trackedMethodsKey ) || "{}");
				} catch (e) {
					if( e instanceof SyntaxError) {
						tracked = {};
					}
				}

				tracked[ name ] = true;
				window.localStorage.setItem( shoestring.trackedMethodsKey, JSON.stringify(tracked) );

				return old.apply(this, arguments);
			};
		}
function recordProxy( old, name ) {
			return function() {
				var tracked;
				try {
					tracked = JSON.parse(window.localStorage.getItem( shoestring.trackedMethodsKey ) || "{}");
				} catch (e) {
					if( e instanceof SyntaxError) {
						tracked = {};
					}
				}

				tracked[ name ] = true;
				window.localStorage.setItem( shoestring.trackedMethodsKey, JSON.stringify(tracked) );

				return old.apply(this, arguments);
			};
		}
function recordProxy ( old , name ) { return function ( ) { var tracked ; try { tracked = JSON . parse ( window . localStorage . getItem ( shoestring . trackedMethodsKey ) || "{}" ) ; } catch ( e ) { if ( e instanceof SyntaxError ) { tracked = { } ; } } tracked [ name ] = true ; window . localStorage . setItem ( shoestring . trackedMethodsKey , JSON . stringify ( tracked ) ) ; return old . apply ( this , arguments ) ; } ; }
return a new function closed over the old implementation
return a new function closed over the old implementation