code: public function await($promise = null, $unwrap = false)
      {
          if (null === $promise) {
              return null;
          }
          $wait = true;
          $resolvedValue = null;
          $exception = null;
          if (!static::isPromise($promise)) {
              throw new \InvalidArgumentException(sprintf('The "%s" method must be called with a Promise ("then" method).', __METHOD__));
          }
          $promise->then(function ($values) use (&$resolvedValue, &$wait) {
              $resolvedValue = $values;
              $wait = false;
          }, function ($reason) use (&$exception, &$wait) {
              $exception = $reason;
              $wait = false;
          });
  
          if ($exception instanceof \Exception) {
              if (!$unwrap) {
                  return $exception;
              }
              throw $exception;
          }
  
          return $resolvedValue;
      }
docs: {@inheritdoc}