 	# @param [Function] Callback function
 	#
 	mdel: (keys, cb) ->
-		return cb new Error "No array" unless Array.isArray keys
-		async.each keys, ((key, cb) => @del key, cb), cb
+		return cb? new Error "No array" unless Array.isArray keys
+		async.each keys, ((key, cb) => @del key, cb), (error) ->
+			cb? error
 
 	# Ephemeral set a key-value
 	#


		@client.psetex p, @ephemeralExpire, JSON.stringify(data), (error, result) =>
			log.debug "#{@id}: setex", p, @ephemeralExpire
			return cb error if error

			updateExpire = =>
				@client.pexpire p, @ephemeralExpire, (error, result) =>


			switch key
				when "set"
					sub = @subscriptions[pattern]
					return log.debug "#{@id}: no subscription for #{pattern}" unless sub

					if pattern.length - 1 is pattern.indexOf "*"
						serviceRole = channel.replace "__keyspace@0__:", ""

						@get serviceRole, (error, service) ->
							return log.error "get error #{error.message}" if error

							sub.regFn? service

					else
						@get sub.path, (error, service) =>
							return log.error "get error #{error.message}" if error

							sub.regFn? service

				when "del"
					sub = @subscriptions[pattern]
					return log.debug "#{@id}: no subscription for #{pattern}" unless sub

					if pattern.length - 1 is pattern.indexOf "*"
						serviceRole = channel.replace "__keyspace@0__:", ""
						sub.freeFn? serviceRole.replace "#{@rootPath}/services/", ""
					else
						sub.freeFn? sub.role

		@subscriber.on "error", (error) =>
			log.warn "Redis client error: #{error.message}"
