docs: async def result(self) -> T:
          """\
          Wait for the task's termination; either the result is returned or a raised exception is reraised.
          If an event is sent before the task terminates, an `EventException` is raised with the event as argument.
          """
          try:
              event = await self.recv_event()
          except Component.Success as succ:
              # success was thrown; return the result
              result, = succ.args
              return cast(T, result)
          except Component.Failure as fail:
              # here we don't expect a wrapped result, so we unwrap the failure
              cause, = fail.args
              raise cause
          else:
              # there was a regular event; shouldn't happen/is exceptional
              raise Component.EventException(event)