Pass auth=HTTPKerberosAuth() kwarg

def request(method, url, **kwargs):
    """
    Pass auth=HTTPKerberosAuth() kwarg
    """
    auth = kwargs.get('auth')
    headers = kwargs.get('headers', {})
    # headers = headers.copy() # ? We do modify the dict in place here...
    if isinstance(auth, TreqKerberosAuth):
        del kwargs['auth']
        if auth.force_preemptive:
            # Save a round-trip and set the Negotiate header on the first req.
            headers['Authorization'] = yield negotiate_header(url)
    response = yield treq.request(method=method, url=url, headers=headers,
                                  **kwargs)
    # Retry if we got a 401 / Negotiate response.
    if response.code == 401 and isinstance(auth, TreqKerberosAuth):
        auth_mechs = response.headers.getRawHeaders('WWW-Authenticate')
        if 'Negotiate' in auth_mechs:
            headers['Authorization'] = yield negotiate_header(url)
            response = yield treq.request(method=method, url=url,
                                          headers=headers, **kwargs)
    defer.returnValue(response)