When doing a large push, git-remote-http optimises by first probing to
find out whether it is permitted to write to the repository before
sending large packfile data. It does this by sending a request
containing just a flush-pkt, which causes git-receive-pack to exit
successfully with no output.
We therefore need to handle the case where the backend exits before
producing any output. To avoid weakening our error handling too much,
we do this only if the connection is lost with ConnectionDone, and we
synthesise an error message from the backend if the git service process
exits non-zero with no output.