# retries pydantic_v2.BaseModel
  > GET https://api.example.com/safe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  not followed by the call = ('APIStatusError', 'unexpected_status', 301, 1, 'NoneType')
    unused=1 hops=[('GET', 'https://api.example.com/safe'), 301]
  > GET https://api.example.com/safe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  > GET https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  301 GET = (SafeGetResponse(root='server payload'), 200, 1)
    unused=0 hops=[('GET', 'https://api.example.com/safe'), 301, ('GET', 'https://api.example.com/done'), 200]
  > GET https://api.example.com/safe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  > GET https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  302 GET = (SafeGetResponse(root='server payload'), 200, 1)
    unused=0 hops=[('GET', 'https://api.example.com/safe'), 302, ('GET', 'https://api.example.com/done'), 200]
  > GET https://api.example.com/safe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  > GET https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  303 GET = (SafeGetResponse(root='server payload'), 200, 1)
    unused=0 hops=[('GET', 'https://api.example.com/safe'), 303, ('GET', 'https://api.example.com/done'), 200]
  > GET https://api.example.com/safe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  > GET https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  307 GET = (SafeGetResponse(root='server payload'), 200, 1)
    unused=0 hops=[('GET', 'https://api.example.com/safe'), 307, ('GET', 'https://api.example.com/done'), 200]
  > GET https://api.example.com/safe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  > GET https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  308 GET = (SafeGetResponse(root='server payload'), 200, 1)
    unused=0 hops=[('GET', 'https://api.example.com/safe'), 308, ('GET', 'https://api.example.com/done'), 200]
  > GET https://api.example.com/safe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  > GET https://other.example.com:9443/done
    [host: other.example.com:9443, accept-encoding: gzip, deflate, accept: text/plain] b''
  another origin = (SafeGetResponse(root='server payload'), 200, 1)
    unused=0 hops=[('GET', 'https://api.example.com/safe'), 302, ('GET', 'https://other.example.com:9443/done'), 200]
  > GET https://api.example.com/safe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  unsupported 305 = ('APIStatusError', 'unexpected_status', 305, 1, 'NoneType')
    unused=1 hops=[('GET', 'https://api.example.com/safe'), 305]
  > GET https://api.example.com/safe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  missing Location = ('APIStatusError', 'unexpected_status', 302, 1, 'NoneType')
    unused=1 hops=[('GET', 'https://api.example.com/safe'), 302]
  > GET https://api.example.com/safe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  > GET https://api.example.com/next%2Fpart?q=a%2Fb
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  relative encoded = (SafeGetResponse(root='server payload'), 200, 1)
    unused=0 hops=[('GET', 'https://api.example.com/safe'), 302, ('GET', 'https://api.example.com/next%2Fpart?q=a%2Fb#omitted'), 200]
  > GET https://api.example.com/safe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  invalid port = ('APIConnectionError', None, None, 1, 'RemoteProtocolError')
    unused=1 hops=[('GET', 'https://api.example.com/safe'), 302]
  > GET https://api.example.com/safe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  not followed by the view = ('APIStatusError', 'unexpected_status', 301, 1, 'NoneType')
    unused=1 hops=[('GET', 'https://api.example.com/safe'), 301]
  > GET https://api.example.com/safe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  > GET https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  followed by the call over the view = (SafeGetResponse(root='server payload'), 200, 1)
    unused=0 hops=[('GET', 'https://api.example.com/safe'), 301, ('GET', 'https://api.example.com/done'), 200]
  > GET https://api.example.com/safe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  > GET https://api.example.com/hop0
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  > GET https://api.example.com/hop1
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  past the native limit = ('APIConnectionError', None, None, 1, 'TooManyRedirects')
    unused=1
  > POST https://api.example.com/idempotent
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, content-length: 7] b'payload'
  > GET https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream] b''
  301 POST becomes GET = (IdempotentPostResponse(root='server payload'), 200, 1)
    unused=0
  > POST https://api.example.com/idempotent
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, content-length: 7] b'payload'
  > GET https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream] b''
  302 POST becomes GET = (IdempotentPostResponse(root='server payload'), 200, 1)
    unused=0
  > POST https://api.example.com/unsafe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, content-length: 7] b'payload'
  > GET https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream] b''
  303 POST becomes GET = (UnsafePostResponse(root='server payload'), 200, 1)
    unused=0
  > POST https://api.example.com/unsafe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, content-length: 7] b'payload'
  > POST https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, content-length: 7] b'payload'
  307 POST sends its bytes again = (UnsafePostResponse(root='server payload'), 200, 1)
    unused=0
  > POST https://api.example.com/idempotent
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, content-length: 7] b'payload'
  > POST https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, content-length: 7] b'payload'
  308 POST sends its bytes again = (IdempotentPostResponse(root='server payload'), 200, 1)
    unused=0
  > POST https://api.example.com/keyed
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, idempotency-key: same-key, content-length: 7] b'payload'
  > POST https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, idempotency-key: same-key, content-length: 7] b'payload'
  308 caller key sent again = (KeyedPostResponse(root='server payload'), 200, 1)
    unused=0
  > HEAD https://api.example.com/start
    [host: api.example.com, accept-encoding: gzip, deflate] b''
  > HEAD https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate] b''
  HEAD303 becomes GET = (b'', 200, 1)
  > POST https://api.example.com/idempotent
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, transfer-encoding: chunked] b'onetwo'
  > GET https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream] b''
  303 one-shot body = (IdempotentPostResponse(root='server payload'), 200, 1)
    unused=0
  > POST https://api.example.com/idempotent
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, transfer-encoding: chunked] b'onetwo'
  307 one-shot body = ('APIConnectionError', None, None, 1, 'StreamConsumed')
    unused=1
  > POST https://api.example.com/idempotent
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, content-length: 8] b'original'
  > GET https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream] b''
  > POST https://api.example.com/idempotent
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, content-length: 8] b'original'
  > GET https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream] b''
  303 retry restores original POST = (IdempotentPostResponse(root='server payload'), 200, 2)
    unused=0
  > POST https://api.example.com/unsafe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, content-length: 8] b'original'
  > GET https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream] b''
  refused redirect after an answered unsafe POST = ('APIConnectionError', None, None, 1, 'ConnectError')
    unused=1
  > POST https://api.example.com/idempotent
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, content-length: 8] b'original'
  > GET https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream] b''
  refused redirect after an answered idempotent POST = ('APIConnectionError', None, None, 1, 'ConnectError')
    unused=1
  native request hook failure = ('APIConnectionError', None, None, 1, 'ConnectError')
  > POST https://api.example.com/unsafe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, content-length: 4] b'once'
  native response hook failure without a request = ('APIConnectionError', None, None, 1, 'ConnectError')
    unused=1
  > POST https://api.example.com/unsafe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, content-length: 4] b'once'
  native response hook failure of the answered request = ('APIConnectionError', None, None, 1, 'ConnectError')
    unused=1
  > GET https://api.example.com/safe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, authorization: original-secret, proxy-authorization: proxy-secret, cookie: private=1, x-client: kept] b''
  > GET https://other.example.com/next
    [host: other.example.com, accept-encoding: gzip, deflate, accept: text/plain, proxy-authorization: proxy-secret, x-client: kept] b''
  > GET https://api.example.com/back
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, proxy-authorization: proxy-secret, x-client: kept] b''
  origin chain returns to initial = (SafeGetResponse(root='server payload'), 200, 1)
  downgrade followed = (SafeGetResponse(root='ready'), 200, 1)
    secure=[(b'GET', b'/safe', b'')] plain=[(b'GET', b'/done', b'')]
  downgrade kept by the call = ('APIStatusError', 'unexpected_status', 302, 1, 'NoneType')
    secure=[(b'GET', b'/safe', b'')] plain=[]
  > GET https://api.example.com/safe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  > GET https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain] b''
  async307 = Response(SafeGetResponse(root='server payload'), 200, 'text/plain', None, [('content-type', 'text/plain'), ('content-length', '14')])
    counts=(1, None)
  > POST https://api.example.com/unsafe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, transfer-encoding: chunked] b'onetwo'
  > GET https://api.example.com/middle
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream] b''
  > GET https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream] b''
  async one-shot POST303 GET302 chain = Response(UnsafePostResponse(root='server payload'), 200, 'text/plain', None, [('content-type', 'text/plain'), ('content-length', '14')])
    counts=(1, None) unused=0
  > POST https://api.example.com/unsafe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, transfer-encoding: chunked] b'onetwo'
  async one-shot POST307 ! APIConnectionError: APIConnectionError(operation_id='postUnsafe', cause='StreamConsumed') [operation_id='postUnsafe', cause=StreamConsumed('Attempted to read or stream some content, but the content has already been streamed. For requests, this could be due to passing a generator as request content, and then receiving a redirect response or a secondary request as part of an authentication flow.For responses, this could be due to attempting to stream the response content more than once.')]
    unused=1
  > POST https://api.example.com/unsafe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, content-length: 13] b'seekable body'
  > POST https://api.example.com/done
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, content-length: 13] b'seekable body'
  async seekable POST307 = Response(UnsafePostResponse(root='server payload'), 200, 'text/plain', None, [('content-type', 'text/plain'), ('content-length', '14')])
    unused=0
  > POST https://api.example.com/unsafe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, content-length: 4] b'once'
  async native response hook failure without a request ! APIConnectionError
    unused=1
  > POST https://api.example.com/unsafe
    [host: api.example.com, accept-encoding: gzip, deflate, accept: text/plain, content-type: application/octet-stream, content-length: 4] b'once'
  async native response hook failure of the answered request ! APIConnectionError
    unused=1
