async def METHOD_NAME(sock_dir, io_loop):
    """
    Make sure the method clean_by_request clean up every related data in EventListener
    request_future_1 : will be timeout-ed by clean_by_request(request1)
    request_future_2 : will be finished by me.fire_event and awaiting for it ...
    request_future_3 : will be finished by me.fire_event and awaiting for it ...
    request_future_4 : will be timeout-ed by clean-by_request(request2)
    """
    with eventpublisher_process(sock_dir):
        log.info("After event pubserver start")
        with salt.utils.event.MasterEvent(sock_dir) as me:
            log.info("After master event start %r", me)
            request1 = Request()
            request2 = Request()
            event_listener = saltnado.EventListener(
                {},  # we don't use mod_opts, don't save?
                {"sock_dir": sock_dir, "transport": "zeromq"},
            )
            await asyncio.sleep(1)
            assert 0 == len(event_listener.tag_map)
            assert 0 == len(event_listener.request_map)
            request_future_1 = event_listener.get_event(request1, tag="evt1")
            request_future_2 = event_listener.get_event(request1, tag="evt2")
            dummy_request_future_1 = event_listener.get_event(request2, tag="evt3")
            dummy_request_future_2 = event_listener.get_event(
                request2, timeout=10, tag="evt4"
            )
            assert 4 == len(event_listener.tag_map)
            assert 2 == len(event_listener.request_map)
            me.fire_event({"data": "foo2"}, "evt2")
            me.fire_event({"data": "foo3"}, "evt3")
            await request_future_2
            await dummy_request_future_1
            event_listener.clean_by_request(request1)
            me.fire_event({"data": "foo1"}, "evt1")
            assert request_future_1.done()
            with pytest.raises(saltnado.TimeoutException):
                request_future_1.result()
            assert request_future_2.done()
            assert request_future_2.result()["tag"] == "evt2"
            assert request_future_2.result()["data"]["data"] == "foo2"
            assert dummy_request_future_1.done()
            assert dummy_request_future_1.result()["tag"] == "evt3"
            assert dummy_request_future_1.result()["data"]["data"] == "foo3"
            assert not dummy_request_future_2.done()
            assert 2 == len(event_listener.tag_map)
            assert 1 == len(event_listener.request_map)
            event_listener.clean_by_request(request2)
            with pytest.raises(saltnado.TimeoutException):
                dummy_request_future_2.result()
            assert 0 == len(event_listener.tag_map)
            assert 0 == len(event_listener.request_map)