function next() {
		var value;
		var key;

		idx += 1;
		key = keys[ idx ];

		value = obj[ key ];
		debug( '%s: %s', key, JSON.stringify( value ) );

		if ( fcn.length === 2 ) {
			fcn.call( opts.thisArg, key, cb );
		} else if ( fcn.length === 3 ) {
			fcn.call( opts.thisArg, key, value, cb );
		} else {
			fcn.call( opts.thisArg, key, value, obj, cb );
		}
		/**
		* Callback invoked once a provided function finishes transforming a property.
		*
		* @private
		* @param {*} [error] - error
		* @param {*} [key] - transformed key
		* @returns {void}
		*/
		function cb( error, key ) {
			if ( flg ) {
				// Prevent further processing of properties:
				return;
			}
			if ( error ) {
				flg = true;
				return clbk( error );
			}
			debug( 'Transform result => %s: %s', key, JSON.stringify( value ) );
			out[ key ] = value;
			clbk();
		}
	}
Callback to invoke a provided function for the next property.

@private