The fetch-based reader makes the POST body and authorization header practical. One detail in its parsing loop deserves a stronger failure path: ignoring a JSON parse error can discard a chunk while a later done event still makes the response look complete.
I would distinguish a clean application-level done event from transport EOF, and mark malformed events as a stream failure instead of silently continuing. A byte-fragmentation fixture could split a response at every possible boundary, including inside a multibyte character, and require identical reconstructed output. A second fixture ending before done would check that truncated answers cannot appear as successful completions.