This is possible with the Fetch API actually. You can get the chunked up contents of the request as they arrive. This link has a good example: https://javascript.info/fetch-progress
The issue is with "Content-Encoding: gzip". In that case, "Content-Length" isn't enough. You can make it work if you toss in an extra header server-side.