async def METHOD_NAME(listener_port, frames):
    # coroutine shows up when the client asks
    # to connect
    if enable_rmm:
        set_rmm()
    # Use a global so the `write` callback function can read frames
    global _frames
    global _connected
    global _disconnected
    global _lock
    _connected = 0
    _disconnected = 0
    _lock = threading.Lock()
    _frames = frames
    async def write(ep):
        global _connected
        global _disconnected
        _lock.acquire()
        _connected += 1
        _lock.release()
        for i in range(TRANSFER_ITERATIONS):
            print("ITER: ", i)
            # Send meta data
            await send(ep, _frames)
        print("CONFIRM RECEIPT")
        await ep.close()
        _lock.acquire()
        _disconnected += 1
        _lock.release()
        # break
    lf = ucp.create_listener(write, port=listener_port)
    proc_conn.send("initialized")
    proc_conn.close()
    try:
        while _disconnected < num_workers * EP_ITERATIONS:
            await asyncio.sleep(0.1)
        print("Closing listener")
        lf.close()
    except ucp.UCXCloseError:
        pass