code: def replace_headers(request, replacements):
      
      new_headers = request.headers.copy()
      for k, rv in replacements:
          if k in new_headers:
              ov = new_headers.pop(k)
              if callable(rv):
                  rv = rv(key=k, value=ov, request=request)
              if rv is not None:
                  new_headers[k] = rv
      request.headers = new_headers
      return request
docs: Replace headers in request according to replacements. The replacements
      should be a list of (key, value) pairs where the value can be any of:
        1. A simple replacement string value.
        2. None to remove the given header.
        3. A callable which accepts (key, value, request) and returns a string
           value or None.