code: def retry_query
        retval = nil
  
        (@retry_num + 1).times do |i|
          begin
            retval = yield
            break
          rescue Errno::ETIMEDOUT => e
            raise e if i >= @retry_num
          rescue DynamoDB::Error => e
            if [/\bServiceUnavailable\b/i, /\bexceeded\b/i].any? {|i| i =~ e.message }
              raise e if i >= @retry_num
            else
              raise e
            end
          rescue Timeout::Error => e
            raise e if i >= @retry_num
          end
  
          wait_sec = @retry_intvl * (i + 1)
  
          if @debug
            $stderr.puts("Retry... (wait %d seconds)" % wait_sec)
          end
  
          sleep wait_sec
        end
  
        return retval
      end
docs: def escape(str)
    CGI.escape(str.to_s).gsub('+', '%20')
  end