I just checked in AsynchronousFilter to the incubator. There's a demo to play with, although I'm more interested in feedback about the code:
The basic idea is that the filtering happens on another thread. The filter tries to wait for the filtering to complete before moving on. If the filtering hasn't completed after 200 mills, it hands off to the next filter and stops blocking the event thread. When filtering is done, it notifies downstream filters again with the updated results. In the time between the event thread unblocking and the filter results being completed, the filter is returning invalid data (which is then corrected as soon as processing completes).
I'm not sure how robust it is at this point. I've done this in the past using table models. That implementation worked fine for dozens of tables before we ran into some pretty obscure issues. This model is different enough that those past issues don't really apply. I figured I'd get some feedback before spending too much time running it through the ringers.