| 550 | |
| 551 | @dataclass |
| 552 | class H3Response: |
| 553 | waiter: asyncio.Future[H3Response] |
| 554 | stream_id: int |
| 555 | headers: h3_events.H3Event | None = None |
| 556 | data: bytes | None = None |
| 557 | trailers: h3_events.H3Event | None = None |
| 558 | callback: Callable[[str], None] | None = None |
| 559 | |
| 560 | async def wait_result(self) -> H3Response: |
| 561 | return await asyncio.wait_for(self.waiter, timeout=QuicClient.TIMEOUT) |
| 562 | |
| 563 | def __setattr__(self, name: str, value: Any) -> None: |
| 564 | super().__setattr__(name, value) |
| 565 | if self.callback: |
| 566 | self.callback(name) |
| 567 | |
| 568 | |
| 569 | class H3Client(QuicClient): |