previously query plugins were strictly synchrounous - the query process would be interrupted at some point, data would be looked up or a change would be made, and then the query processing would resume immediately. this commit enables query plugins to initiate asynchronous processes and resume on a completion event, as with recursion.