 
 		console.log "#{@namespace}: bucket created: opts: #{JSON.stringify(@options)}"
 
-	S4: ->
-		(((1+Math.random())*0x10000)|0).toString(16).substring(1)
-
+	# ### `uuid()`
+	# Generate a UUID (not RFC 4122 4.4)
 	uuid: (n) ->
 		n = n || 8
 		s = @S4()
 		while n -= 1
 			s += @S4()
 		return s
+
+	# using a random 4-hexit generator.
+	S4: ->
+		(((1+Math.random())*0x10000)|0).toString(16).substring(1)
 
 	now: ->
 		new Date().getTime()

			if @s.connected
				@first = true
				if 'limit' of @options
					index_query = "i:1:::#{@options['limit']}"
				else
					index_query = "i:1:::40"
				@irequest_time = @now()
				@index_request = true

			setTimeout do(item) =>
				=> @on_entity_version(item['d'], item['id'], item['v'])

		# If the response is the last page of the index, then we're done.
		if not ('mark' of response) or 'limit' of @options
			# 1. Unset the "currently doing an index request" state flag
			@index_request = false
			# 2. Set the CV. @todo We should be checking the CV for each page request.
			if 'current' of response
				@data.last_cv = response['current']
				@_save_meta()
			else
				@data.last_cv = 0
			# 3. If it wasn't already called above by `@on_entity_version()`, call `@_index_loaded()`, which sets `@initialized`.
			if loaded is 0
				@_index_loaded()
		# Otherwise, we need to request the next page.
		else
			# 1. Reset the "currently doing an index request" state flag
			@index_request = true
			console.log "#{@name}: index last process time: #{@now() - now}, page_delay: #{@options['page_delay']}"
			# 2. Wait `@options['page_delay']` milliseconds and request the next 100 items.
			mark = response['mark']
			page_req = (mark) =>
				# Request: Index, with data, from item {mark}, since the beginning of time, return 100 items
				@send("i:1:#{mark}::100")
				@irequest_time = @now()

			setTimeout( (do(mark) =>
				=> page_req(mark)), @options['page_delay'])

	# Useless? Never called.
	on_index_error: =>
		console.log "#{@name}: index doesnt exist or other error"

