It seems like this could have better checking and bail out with more reasons why if the content length is -1.
Why doesn’t this code bail when things are as they expect? You can wind up in the situation I’m in where I’m trying to debug sha3_384 mismatches and I think it was a Content-Length not being set issue.