Read([]byte{}) returns immediately, whereas Read([]byte{0}) blocks until the stream is actually closed. This make as difference if the STREAM frame with the FIN is received after the HTTP handler returned.