 
 				state.n++
 				should(localCache.get state.key1).be.undefined()
+				done()
 				return
 			, 700)
 			return

				state.keys.push key
			return

		describe "BENCHMARK", () ->
			this.timeout(0)
			# hack so mocha always shows timing information
			this.slow(1)

			it "SET", () ->
				start = Date.now()
				# not using forEach because it's magnitude 10 times slower than for
				# and we are into a benchmark
				for key in state.keys
					should(localCache.set key, state.val, 0).be.ok()
				duration = Date.now() - start
				if not process.env.SILENT_MODE?
					console.log "\tSET: #{state.count} keys to: `#{state.val}` #{duration}ms (#{duration/state.count}ms per item)"
				else
					BENCH[ "SET" ] = 1/(( duration/1000 )/state.count)
				return

			it "GET", () ->
				# this benchmark is a bit useless because the equality check eats up
				# around 3/4 of benchmark time
				start = Date.now()
				for key in state.keys
					state.n++
					state.val.should.eql localCache.get(key)
				duration = Date.now() - start
				if not process.env.SILENT_MODE?
					console.log "\tGET: #{state.count} keys #{duration}ms (#{duration/state.count}ms per item)"
				else
					BENCH[ "GET" ] = 1/(( duration/1000 )/state.count)
				return

			it "check stats", () ->
				stats = localCache.getStats()
				keys = localCache.keys()

				stats.keys.should.eql keys.length
				state.count.should.eql keys.length
				state.n.should.eql keys.length
				return

			after () ->
				if not process.env.SILENT_MODE?
					console.log "\tBenchmark stats:"
					console.log stringify(localCache.getStats(), null, "\t")
				return
			return
		return


	describe "delete", () ->
		this.timeout(0)

			state.keyValueSet[0].key = true

			(() -> localCacheMset.mset(state.keyValueSet)).should.throw({
				name: "EKEYTYPE"
				message: "The key argument has to be of type `string` or `number`. Found: `boolean`"
			})
			return
		
		it "mset - object key throw error", () ->
