Well, if you don't want me to expand the API at all, I might as well just take my marbles and go home; the whole *point* of this patchset is to expand the API to make redirection handling easier.  (Plus bugfixes, but the bugfixes are not that valuable without the expanded API - they all *can* be worked around at the application level if you have to.)

It is obviously necessary for the library to have some notion of this predicate; indeed, the expression

    'location' in self.headers and self.status_code in REDIRECT_STATI

appeared verbatim in `Session.resolve_redirects`-that-was.  Now, if you are manually processing redirects at the application level, it is valuable for the application to be able to access that same predicate: I already gave the example

    r = sess.get(..., allow_redirects=False)
    while r.is_redirect:
        do_something_with(r)
        r = sess.resolve_one_redirect(r)

Without the new property, the application is forced to duplicate the logic that's inside the property, which is obviously undesirable.

[Perhaps it would be useful for me to share what my application's core redirect-crunching loop looks like now, i.e. without these API changes?  I'll stick that in the cover message, not here.]