for await()

in src/commands/repair-package-data.ts [65:106]


    for await (const prefix of packageVersionPrefixes) {
      const status = await this.processPackageVersion(S3, bucketName, prefix);
      if (!status.assemblyKey || !status.metadataKey || !status.tarballKey) {
        console.error(
          `${chalk.blue.bold(status.name)}@${chalk.blue.bold(status.version)}`,
          chalk.red('has missing base objects'),
          ' - ',
          [
            `assembly: ${status.assemblyKey ? chalk.bgGreen('PRESENT') : chalk.bgRed('MISSING')}`,
            `metadata: ${status.metadataKey ? chalk.bgGreen('PRESENT') : chalk.bgRed('MISSING')}`,
            `tarball: ${status.tarballKey ? chalk.bgGreen('PRESENT') : chalk.bgRed('MISSING')}`,
          ].join(', '),
        );
        continue;
      }
      const missingLanguages = new Set<string>();
      for (const language of languages) {
        if (status.docs.get(language) == null) {
          missingLanguages.add(language);
        }
        for (const subStatus of status.submodules.values()) {
          if (subStatus.get(language) == null) {
            missingLanguages.add(language);
          }
        }
      }
      if (missingLanguages.size > 0) {
        console.log(`${chalk.blue.bold(status.name)}@${chalk.blue.bold(status.version)} is missing documents for ${Array.from(missingLanguages).map((l) => chalk.green(l)).join(', ')}`);
        broken.push([status, Array.from(missingLanguages)]);
      }

      if (stateMachine && broken.length >= fixBatchSize) {
        if (runningMachines.size >= highWaterMark) {
          await this.waitForSettlements(runningMachines, lowWaterMark);
        }
        const { executionArns } = await this.repairPackageVersions(SFN, bucketName, stateMachine, broken, ns);
        for (const arn of executionArns.values()) {
          runningMachines.set(arn, this.awaitStateMachineEnd(SFN, arn));
        }
        broken.splice(0, broken.length);
      }
    }