code: public function wait(Promise $promise)
      {
          $this->beforeWait($promise);
          $dfdQueue     = Deferred::getQueue();
          $promiseQueue = SyncPromise::getQueue();
  
          while ($promise->adoptedPromise->state === SyncPromise::PENDING &&
              ! ($dfdQueue->isEmpty() && $promiseQueue->isEmpty())
          ) {
              Deferred::runQueue();
              SyncPromise::runQueue();
              $this->onWait($promise);
          }
  
          /** @var SyncPromise $syncPromise */
          $syncPromise = $promise->adoptedPromise;
  
          if ($syncPromise->state === SyncPromise::FULFILLED) {
              return $syncPromise->result;
          }
  
          if ($syncPromise->state === SyncPromise::REJECTED) {
              throw $syncPromise->result;
          }
  
          throw new InvariantViolation('Could not resolve promise');
      }
docs: Synchronously wait when promise completes
  
  @return ExecutionResult