Protocol-agnostic HTTP layer: applies session headers (per request, so auth set/refreshed mid-life takes effect immediately), JSON encodes bodies, and maps failures to typed errors. Shared by GraphQL, REST, and streaming.
Open a (possibly long-lived) response without buffering the body — for streaming endpoints. Caller consumes response.body.
response.body
Send a request and parse the JSON body (or undefined if empty).
Protocol-agnostic HTTP layer: applies session headers (per request, so auth set/refreshed mid-life takes effect immediately), JSON encodes bodies, and maps failures to typed errors. Shared by GraphQL, REST, and streaming.