code: async def _async_wait_for_process(
          future_process: Any,
          out: Optional[Union[TeeCapture, IO[str]]] = sys.stdout,
          err: Optional[Union[TeeCapture, IO[str]]] = sys.stderr
  ) -> CommandOutput:
      
      process = await future_process
      future_output = _async_forward(process.stdout, out)
      future_err_output = _async_forward(process.stderr, err)
      output, err_output = await asyncio.gather(future_output, future_err_output)
      await process.wait()
  
      return CommandOutput(output, err_output, process.returncode)
docs: Awaits the creation and completion of an asynchronous process.
  
      Args:
          future_process: The eventually created process.
          out: Where to write stuff emitted by the process' stdout.
          err: Where to write stuff emitted by the process' stderr.
  
      Returns:
          A (captured output, captured error output, return code) triplet.