Asynchronous request manager for session.  Returns list of responses that
    match the filter.

    `urls` - tuple of URLs to request  
    `re_filter` - a compiled regular expression
    [object](https://docs.python.org/3/library/re.html#re-objects)

async def asynchronous(urls=None, re_filter=None):
    """ Asynchronous request manager for session.  Returns list of responses that
    match the filter.

    `urls` - tuple of URLs to request  
    `re_filter` - a compiled regular expression
    [object](https://docs.python.org/3/library/re.html#re-objects)
    """
    class _URLBase(str):
        """ Convenient access to hostname (ip) portion of the URL """
        @property
        def hostname(self):
            return urlsplit(self).hostname

    http_devices = {}
    qualified_devices = []
    connection = aiohttp.TCPConnector(limit=0)
    async with aiohttp.ClientSession(connector=connection, 
        conn_timeout=5, raise_for_status=True) as session:
        
        futures = [fetch_page(session, url) for url in urls]

        for future in asyncio.as_completed(futures):
            response = await future
            if 'found' in response[1]:
                http_devices[response[0]] = response[2]
                logger.debug('Processed %s', response[0])
                if re_filter.search(response[2]):
                    qualified_devices.append(_URLBase(response[0]))

    # print('The following responded to HTTP:')
    # for x in http_devices.keys():
    #     print(x)

    return qualified_devices