message: Fix for loadInitialGCSummaryDetails in SummarizerNodeWithGC not being re-entrant
diff: @@ -120,17 +120,25 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
  * - gcData: The garbage collection data of this node that is required for running GC.
  */
  private async loadInitialGCSummaryDetails() {
  - // If referenceUsedRoutes is not undefined, don't do anything because we have already initialized.
  - if (this.referenceUsedRoutes === undefined) {
  + // If referenceUsedRoutes exists, don't do anything because we have already initialized.
  + if (this.referenceUsedRoutes !== undefined) {
  + return;
  + }
  +
  const gcDetailsInInitialSummary = await this.gcDetailsInInitialSummaryP;
  - this.referenceUsedRoutes = gcDetailsInInitialSummary.usedRoutes;
  + // Possible re-entrancy. It's possible that referenceUsedRoutes was set while we were waiting to get the
  + // initial GC details.
  + if (this.referenceUsedRoutes !== undefined) {
  + return;
  + }
  +
  + this.referenceUsedRoutes = gcDetailsInInitialSummary.usedRoutes;
  // If the GC details has GC data, initialize our GC data from it.
  if (gcDetailsInInitialSummary.gcData !== undefined) {
  this.gcData = cloneGCData(gcDetailsInInitialSummary.gcData);
  }
  }
  - }
  public async summarize(fullTree: boolean, trackState: boolean = true): Promise<IContextSummarizeResult> {
  // Load GC details from the initial summary, if it's not already loaded. If this is the first time this node is
  