here is the implementation: ``` async def until(self, condition: ValueLike): tick = self.sample(condition).__aiter__() done = False while not done: clk, rst, *values, done = await tick.__anext__() if rst: raise DomainReset return tuple(values) ```