def METHOD_NAME(self):
    # Instantiate a single object which will be used in >1 thread
    r = Responder(pattern="foo", response="bar fight")  # meh
    # Thread body func allowing us to mimic actual IO thread behavior, with
    # Queues used in place of actual pipes/files
    def body(responder, in_q, out_q, finished):
        while not finished.is_set():
            try:
                # NOTE: use nowait() so our loop is hot & can shutdown ASAP
                # if finished gets set.
                stream = in_q.get_nowait()
                for response in r.submit(stream):
                    out_q.put_nowait(response)
            except Empty:
                pass
    # Create two threads from that body func, and queues/etc for each
    t1_in, t1_out, t1_finished = Queue(), Queue(), Event()
    t2_in, t2_out, t2_finished = Queue(), Queue(), Event()
    t1 = Thread(target=body, args=(r, t1_in, t1_out, t1_finished))
    t2 = Thread(target=body, args=(r, t2_in, t2_out, t2_finished))
    # Start the threads
    t1.start()
    t2.start()
    try:
        stream = "foo fighters"
        # First thread will basically always work
        t1_in.put(stream)
        assert t1_out.get() == "bar fight"
        # Second thread get() will block/timeout if threadlocals aren't in
        # use, because the 2nd thread's copy of the responder will not have
        # its own index & will thus already be 'past' the `foo` in the
        # stream.
        t2_in.put(stream)
        assert t2_out.get(timeout=1) == "bar fight"
    except Empty:
        assert (
            False
        ), "Unable to read from thread 2 - implies threadlocal indices are broken!"  # noqa
    # Close up.
    finally:
        t1_finished.set()
        t2_finished.set()
        t1.join()
        t2.join()