code: private function promiseForAssocArray(array $assoc)
      {
          $keys              = array_keys($assoc);
          $valuesAndPromises = array_values($assoc);
          $promise           = $this->exeContext->promises->all($valuesAndPromises);
  
          return $promise->then(static function ($values) use ($keys) {
              $resolvedResults = [];
              foreach ($values as $i => $value) {
                  $resolvedResults[$keys[$i]] = $value;
              }
  
              return self::fixResultsIfEmptyArray($resolvedResults);
          });
      }
docs: This function transforms a PHP `array<string, Promise|scalar|array>` into
  a `Promise<array<key,scalar|array>>`
  
  In other words it returns a promise which resolves to normal PHP associative array which doesn't contain
  any promises.
  
  @param (string|Promise)[] $assoc
  
  @return mixed