 for command, key_pos of COMMANDS
 	do (command, key_pos) ->
 		Client.prototype[command] = (args..., callback) ->
+			primaryError = null
+			primaryResult = null
 			jobs = @clients.map (client) ->
 				(cb) ->
 					key_builder = args[key_pos]

	constructor: (@clients) ->
	
	exec: (callback) ->
		jobs = @clients.map (client) ->
			(cb) ->
				timer = new Metrics.Timer("redis.#{client.driver}.exec")

						result = filtered_result
						
					if client.primary
						primaryError = error
						primaryResult = result
					cb(error, result)
		async.parallel jobs, (error, results) ->
			if error?
				logger.error {err: error}, "error in redis backend"
			else
				compareResults(results)
			callback(primaryError, primaryResult)

COMMANDS = {
	"get": 0,
