code: def _async_poll(self, poller, async_seconds, async_poll_interval):
          ''' launch an async job, if poll_interval is set, wait for completion '''
  
          results = poller.wait(async_seconds, async_poll_interval)
  
          # mark any hosts that are still listed as started as failed
          # since these likely got killed by async_wrapper
          for host in poller.hosts_to_poll:
              reason = { 'failed' : 1, 'rc' : None, 'msg' : 'timed out' }
              self.runner_callbacks.on_failed(host, reason)
              results['contacted'][host] = reason
  
          return resultf _async_poll(self, poller, async_seconds, async_poll_interval):
          ''' launch an async job, if poll_interval is set, wait for completion '''
  
          results = poller.wait(async_seconds, async_poll_interval)
  
          # mark any hosts that are still listed as started as failed
          # since these likely got killed by async_wrapper
          for host in poller.hosts_to_poll:
              reason = { 'failed' : 1, 'rc' : None, 'msg' : 'timed out' }
              self.runner_callbacks.on_failed(host, reason)
              results['contacted'][host] = reason
  
          return results
docs: launch an async job, if poll_interval is set, wait for completion