docs: @Override
      public LockResult lock(int waitWeight, String clientId, long lockDurationMs) {
          if (StringUtils.isBlank(clientId)) {
              throw new IllegalArgumentException("Invalid ClientID!");
          }
          if (lockDurationMs <= 0) {
              throw new IllegalArgumentException("Lock duration must be greater than zero!");
          }
          try (Jedis jedis = getJedis()) {
              String zsetName = getZsetName();
              if (waitWeight >= 0) {
                  jedis.zadd(zsetName, waitWeight, clientId);
                  Long rank = jedis.zrevrank(zsetName, clientId);
                  if (rank != null && rank.intValue() != 0) {
                      return LockResult.HOLD_BY_ANOTHER_CLIENT;
                  }
              }
              String key = getName();
              Object response = jedis.eval(getScriptLock(), 0, key, clientId,
                      String.valueOf(lockDurationMs));
              if (response == null) {
                  updateLockHolder(jedis);
                  return LockResult.HOLD_BY_ANOTHER_CLIENT;
              } else {
                  updateLockHolder(clientId, lockDurationMs);
                  if (waitWeight >= 0) {
                      jedis.del(zsetName);
                  }
                  return LockResult.SUCCESSFUL;
              }
          }
      }