Unknown content-length should be best effort to decode.

If `content-length` is missing attempt to decode the stream. If we fail we will retry anyways. 

Edge case is when the `content-length` comes back as 0 on request replaying which we retry the request.

closes #523 #524 #501