Skip to content

API for receiving interim responses (including early hints) #1716

Open
@jasnell

Description

@jasnell

What problem are you trying to solve?

Early hints (103 responses) are not the only kind of interim response the http spec allows for. It would be ideal for fetch to provide a means of receiving and processing interim responses.

What solutions exist today?

For fetch, none.

How would you solve it?

Define a new InterimResponse dictionary:

dictionary InterimResponse {
  unsigned short status;
  ByteString statusText;
  USVString url;
  Headers headers;
}

Define a new FetchPromise that extends Promise<Response> and implements Symbol.asyncIterator, returning an AsyncIterable of InterimResponses. The fetch() method would return this new FetchPromise, allowing, for example:

const fetchPromise = fetch('https://...');  // note no await

for await (const interimResponse of fetchPromise) {
  // process the interim response
}

const resp = await fetchPromise;

Anything else?

Original discussion for this mechanism here: https://docs.google.com/document/d/1P4MskkFd3HHFPGDr01O3wdFXukmX9i0jAb5uh9v9x8Q/edit

Metadata

Metadata

Assignees

No one assigned

    Labels

    addition/proposalNew features or enhancementsneeds implementer interestMoving the issue forward requires implementers to express interest

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions