![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/vendor/rector/rector/vendor/react/dns/src/Query/ |
<?php namespace RectorPrefix202410\React\Dns\Query; use RectorPrefix202410\React\Promise\Promise; final class FallbackExecutor implements ExecutorInterface { private $executor; private $fallback; public function __construct(ExecutorInterface $executor, ExecutorInterface $fallback) { $this->executor = $executor; $this->fallback = $fallback; } public function query(Query $query) { $cancelled = \false; $fallback = $this->fallback; $promise = $this->executor->query($query); return new Promise(function ($resolve, $reject) use(&$promise, $fallback, $query, &$cancelled) { $promise->then($resolve, function (\Exception $e1) use($fallback, $query, $resolve, $reject, &$cancelled, &$promise) { // reject if primary resolution rejected due to cancellation if ($cancelled) { $reject($e1); return; } // start fallback query if primary query rejected $promise = $fallback->query($query)->then($resolve, function (\Exception $e2) use($e1, $reject) { $append = $e2->getMessage(); if (($pos = \strpos($append, ':')) !== \false) { $append = \substr($append, $pos + 2); } // reject with combined error message if both queries fail $reject(new \RuntimeException($e1->getMessage() . '. ' . $append)); }); }); }, function () use(&$promise, &$cancelled) { // cancel pending query (primary or fallback) $cancelled = \true; $promise->cancel(); }); } }