Regarding Rosters as a roster-source, these become async sources when they transclude markup by fetching page json and interpreting it recursively within.
The recursive aspect occurs when the plugin transcludes content from A which itself transcludes content from B which it couldn't have known until it fetched and parsed A. The only restriction we apply is that this can't loop. This process will eventually terminate with the right information on the screen but the current plugin makes no effort to update downstream roster-source dependents as this information rolls in.
From Roster Madness found.ward.bay.wiki.org ROSTER ward.asia.wiki.org/roster-madness-a
See Roster Madness A
Again, if the user waits for the Roster plugin to stabilize before advancing to Recent Changes then that page's Activity plugin gets the whole stable picture.
However, if we call up the lineup with one url then the listener doesn't hear about later updates. lineup