def release
      return false if @token.nil?

      released = true

      if @acquired.decrement.zero?
        keys = [@lease.key, @tokens.key]
        argv = [@token, generate_token, (@expiry.to_f * 1000).floor]

        released = coerce_bool(release_script(keys: keys, argv: argv))
        @token = nil
      end

      return released
    end
def release
      return false if @token.nil?

      released = true

      if @acquired.decrement.zero?
        keys = [@lease.key, @tokens.key]
        argv = [@token, generate_token, (@expiry.to_f * 1000).floor]

        released = coerce_bool(release_script(keys: keys, argv: argv))
        @token = nil
      end

      return released
    end
Releases the lock only if the current token is the value of the lease.
 If the lock is a blocking lock (see Lock#blocking?), push the next token on the tokens list.
 @return [Boolean] True if released, false otherwise