code: def survey(network=None, path='', pattern='', log=False):
      
      if log:
          logger.setLevel(logging.DEBUG)
      else:
          logger.setLevel(logging.CRITICAL)
  
      network_scan = asyncio.ensure_future(asynchronous(
          urls=url_generator(network=network, path=path),
          re_filter=re.compile(pattern))
          )
      ioloop = asyncio.get_event_loop()
      ioloop.run_until_complete(network_scan)
      # Zero-sleep to allow underlying connections to close
      # http://aiohttp.readthedocs.io/en/stable/client_advanced.html#graceful-shutdown
      ioloop.run_until_complete(asyncio.sleep(0))
      # ioloop.close()  # don't close the loop, so it's available for re-use 
      # https://stackoverflow.com/questions/45010178/how-to-use-asyncio-event-loop-in-library-function
      return sorted(network_scan.result(), key=lambda x: ipaddress.ip_address(x.hostname))
docs: Search network for hosts with a response to path that matches pattern
  
      `network` - IP address and subnet mask compatible with 
      [ipaddress library](https://docs.python.org/3/library/ipaddress.html#ipaddress.ip_network)  
      `path` - Path portion of a URL as defined by 
      [url(un)split](https://docs.python.org/3/library/urllib.parse.html#urllib.parse.urlsplit)  
      `pattern` - A regular expression pattern compatible with
      [re.compile](https://docs.python.org/3/library/re.html#re.compile)  
      `log` -  boolean to control logging level