( subscriber: Subscriber<T>, iterator: AsyncIterator<T>, )
| 278 | } |
| 279 | |
| 280 | async function handleAsyncIterator<T>( |
| 281 | subscriber: Subscriber<T>, |
| 282 | iterator: AsyncIterator<T>, |
| 283 | ): Promise<void> { |
| 284 | const teardown = new Promise<void>((resolve) => subscriber.add(() => resolve())); |
| 285 | |
| 286 | try { |
| 287 | while (!subscriber.closed) { |
| 288 | const result = await Promise.race([teardown, iterator.next()]); |
| 289 | if (!result || result.done) { |
| 290 | break; |
| 291 | } |
| 292 | |
| 293 | subscriber.next(result.value); |
| 294 | } |
| 295 | } finally { |
| 296 | await iterator.return?.(); |
| 297 | } |
| 298 | } |
| 299 | |
| 300 | /** |
| 301 | * A builder handler function. The function signature passed to `createBuilder()`. |
no test coverage detected