With the flex api it was quite easy to keep track of multiple QueryTasks being executed by using AsyncTokens, but I can't find an equivalent in dojo. Any ideas on how to do this? I don't just want to lump requests together into a deferred list, I need to be able to identify each request being sent off somehow.
A dojo.DeferredList is your best option. The deferred list maintains the order of the deferreds so, for instance, the results from the queryTask that is the 2nd array passed to deferredList will be available as the second item in the array passed to the deferred list callback.