docs: def _generate_async(self, generator):
          """
          Return the previous generator object after having run the first element
          evaluation as a background task.
  
          Args:
              generator (iterable): A generator function.
  
          Returns:
              iterable: The generator function with first element evaluated
                  in background.
          """
          first_value_future = self._workers.submit(next, generator)
  
          def get_first_element(future=first_value_future):
              """
              Get first element value from future.
  
              Args:
                  future (concurrent.futures._base.Future): First value future.
  
              Returns:
                  Evaluated value
              """
              try:
                  yield future.result()
              except StopIteration:
                  return
  
          return chain(get_first_element(), generator)