| 537 | } |
| 538 | |
| 539 | next(): Promise<IteratorResult<SessionEvent>> { |
| 540 | const item = this.#items.shift(); |
| 541 | if (item) return Promise.resolve({ done: false, value: item }); |
| 542 | if (this.#error !== undefined) return Promise.reject(this.#error); |
| 543 | if (this.#done || this.#finishAfterItems) { |
| 544 | this.#done = true; |
| 545 | return Promise.resolve({ done: true, value: undefined }); |
| 546 | } |
| 547 | if (this.#waiting) |
| 548 | return Promise.reject(new Error('Session event stream already has a reader')); |
| 549 | return new Promise((resolve, reject) => { |
| 550 | this.#waiting = { resolve, reject }; |
| 551 | }); |
| 552 | } |
| 553 | |
| 554 | push(event: SessionEvent): void { |
| 555 | if (this.#done || this.#finishAfterItems || this.#error !== undefined) return; |