public <T> T await(Command<K, V, T> cmd, long timeout, TimeUnit unit) { if (!cmd.await(timeout, unit)) { cmd.cancel(true); throw new RedisException("Command timed out"); } CommandOutput<K, V, T> output = cmd.getOutput(); if (output.hasError()) throw new RedisException(output.getError()); return output.get(); }