 	# @param [Function] Callback function
 	#
 	mpset: (arr, cb) ->
-		return cb new Error "No 2D array" unless Array.isArray arr
-		return cb new Error "No 2D array" if arr.length and not Array.isArray arr[0]
-		async.each arr, ((a, cb) => @pset a[0], a[1], cb), cb
+		return cb? new Error "No 2D array" unless Array.isArray arr
+		return cb? new Error "No 2D array" if arr.length and not Array.isArray arr[0]
+		async.each arr, ((a, cb) => @pset a[0], a[1], cb), (error) ->
+			cb? error
 
 	# Get a value by key
 	#

	# @property [Object] Subscription registry
	subscriptions:    null

	# @property [Object] Wildcard queries
	wildcards:        null

	# Constructor
	#
	# @param options [Object] Main options


			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}"
