code: def repeat_func(func: Callable[[], Union[T, Awaitable[T]]], times: int=None, *, interval: float=0) -> AsyncIterator[T]:
      
      base = stream.repeat.raw((), times, interval=interval)
      return cast(AsyncIterator[T], stream.starmap.raw(base, func, task_limit=1))
docs: Repeats the result of a 0-ary function either indefinitely, or for a defined number of times.
      `times` and `interval` behave exactly like with `aiostream.create.repeat`.
  
      A useful idiom is to combine an indefinite `repeat_func` stream with `aiostream.select.takewhile`
      to terminate the stream at some point.