docs: def percent_encode_non_ascii_headers(self, encoding='UTF-8'):
          """ Encode any headers that are not plain ascii
              as UTF-8 as per:
              https://tools.ietf.org/html/rfc8187#section-3.2.3
              https://tools.ietf.org/html/rfc5987#section-3.2.2
          """
          def do_encode(m):
              return "*={0}''".format(encoding) + quote(to_native_str(m.group(1)))
  
          for index in range(len(self.headers) - 1, -1, -1):
              curr_name, curr_value = self.headers[index]
              try:
                  # test if header is ascii encodable, no action needed
                  curr_value.encode('ascii')
              except:
                  new_value = self.ENCODE_HEADER_RX.sub(do_encode, curr_value)
                  if new_value == curr_value:
                      new_value = quote(curr_value)
  
                  self.headers[index] = (curr_name, new_value)