def METHOD_NAME(bind_address: str, output_dir: str) -> int:
    server_url_future = concurrent.futures.Future()
    def run_server():
        try:
            ioloop = tornado.platform.asyncio.AsyncIOLoop()
            ioloop.make_current()
            asyncio.set_event_loop(ioloop.asyncio_loop)
            server_url_future.set_result(_start_server(bind_address, output_dir))
        except Exception as e:
            server_url_future.set_exception(e)
            return
        ioloop.start()
        ioloop.close()
    thread = threading.Thread(target=run_server)
    thread.daemon = True
    thread.start()
    return server_url_future.result()