lib/abaaso.js
function ( fn, ms, id, now ) {
		ms  = ms || 10;
		id  = id || utility.uuid( true );
		now = ( now !== false );

		// Could be valid to return false from initial execution
		if ( now && fn() === false ) {
			return;
		}

		// Creating repeating execution
		utility.defer( function () {
			var recursive = function ( fn, ms, id ) {
				var recursive = this;

				if ( fn() !== false ) {
					utility.repeating[id] = setTimeout( function () {
						recursive.call( recursive, fn, ms, id );
					}, ms );
				}
				else {
					delete utility.repeating[id];
				}
			};

			recursive.call( recursive, fn, ms, id );
		}, ms, id, true );

		return id;
	}
function ( fn, ms, id, now ) {
		ms  = ms || 10;
		id  = id || utility.uuid( true );
		now = ( now !== false );

		// Could be valid to return false from initial execution
		if ( now && fn() === false ) {
			return;
		}

		// Creating repeating execution
		utility.defer( function () {
			var recursive = function ( fn, ms, id ) {
				var recursive = this;

				if ( fn() !== false ) {
					utility.repeating[id] = setTimeout( function () {
						recursive.call( recursive, fn, ms, id );
					}, ms );
				}
				else {
					delete utility.repeating[id];
				}
			};

			recursive.call( recursive, fn, ms, id );
		}, ms, id, true );

		return id;
	}
function ( fn , ms , id , now ) { ms = ms || 10 ; id = id || utility . uuid ( true ) ; now = ( now !== false ) ; // Could be valid to return false from initial execution if ( now && fn ( ) === false ) { return ; } // Creating repeating execution utility . defer ( function ( ) { var recursive = function ( fn , ms , id ) { var recursive = this ; if ( fn ( ) !== false ) { utility . repeating [ id ] = setTimeout ( function ( ) { recursive . call ( recursive , fn , ms , id ) ; } , ms ) ; } else { delete utility . repeating [ id ] ; } } ; recursive . call ( recursive , fn , ms , id ) ; } , ms , id , true ) ; return id ; }
Creates a recursive function

Return false from the function to halt recursion

@method repeat
@param  {Function} fn  Function to execute repeatedly
@param  {Number}   ms  Milliseconds to stagger the execution
@param  {String}   id  [Optional] Timeout ID
@param  {Boolean}  now Executes `fn` and then setup repetition, default is `true`
@return {String}       Timeout ID
Creates a recursive function