function next() {
		var v;
		if ( FLG ) {
			if ( ret ) {
				v = ret;
				ret = null;
				return v;
			}
			return {
				'done': true
			};
		}
		i += 1;
		while ( i < idx ) {
			v = iterator.next();
			if ( v.done ) {
				FLG = true;
				return {
					'done': true
				};
			}
			i += 1;
		}
		v = iterator.next();
		if ( v.done ) {
			FLG = true;
			return v;
		}
		s += 1;
		stride = fcn.call( ctx, v.value, i, s, stride );
		if ( !isPositiveInteger( stride ) ) {
			throw new TypeError( format( 'invalid return value. Callback function must return a positive integer. Value: `%s`.', stride ) );
		}
		idx += stride;
		return v;
	}
Returns an iterator protocol-compliant object containing the next iterated value.

@private
@throws {TypeError} callback function must return a positive integer
@returns {Object} iterator protocol-compliant object