Realtime API - how to create multiple successive responses without running into errors?

You guessed right. You open your websocket and then you need to listen and handle incoming events. Using the javascript websocket api in the browser it would look like this:

// Handle incoming messages
  ws.onmessage = (event) => {
    try {
      const data = JSON.parse(event.data)
      console.log('[Realtime] Received event:', data)

      // Handle the incoming event
      handleWebsocketEvent(data)
    } catch (error) {
      console.error('[Realtime] Error parsing message:', error)
    }
  }

Handle it like this:

const handleWebsocketEvent = (event) => {
  switch (event.type) {
    case 'response.done':
      // use some logic ( processing a request queue etc.) to check if the correct response is done and to trigger the next request ...
      break
      // ... insert more handlers for other events
    default:
      console.warn('[Realtime] Unhandled event type:', event.type)
  }
}

You can probably also drop the “async” for the websocket calls since you get your response as websocket events.