code: function ( obj, fn, async, size ) {
  		var nth = obj.length,
  		    i, offset;
  
  		if ( async !== true ) {
  			for ( i = 0; i < nth; i++ ) {
  				if ( fn.call( obj, obj[i], i ) === false ) {
  					break;
  				}
  			}
  		}
  		else {
  			size   = size || 10;
  			offset = 0;
  
  			if ( size > nth ) {
  				size = nth;
  			}
  
  			utility.repeat( function () {
  				var i = 0,
  				    idx;
  
  				for ( i = 0; i < size; i++ ) {
  					idx = i + offset;
  
  					if ( idx === nth || fn.call( obj, obj[idx], idx ) === false ) {
  						return false;
  					}
  				}
  
  				offset += size;
  
  				if ( offset >= nth ) {
  					return false;
  				}
  			}, undefined, undefined, false );
  		}
  
  		return obj;
  	}
docs: Iterates obj and executes fn
  
  Parameters for fn are 'value', 'index'
  
  @method each
  @param  {Array}    obj   Array to iterate
  @param  {Function} fn    Function to execute on index values
  @param  {Boolean}  async [Optional] Asynchronous iteration
  @param  {Number}   size  [Optional] Batch size for async iteration, default is 10
  @return {Array}          Array