17
17
use Amp \Http \Client \Psr7 \PsrHttpClientException ;
18
18
use Amp \Http \Client \Request as AmpRequest ;
19
19
use Amp \Http \Client \Response ;
20
+ use Amp \Http \Client \SocketException ;
20
21
use Amp \Http \Tunnel \Http1TunnelConnector ;
21
22
use Amp \Http \Tunnel \Https1TunnelConnector ;
22
23
use Amp \Socket \Certificate ;
25
26
use Amp \Socket \SocketConnector ;
26
27
use Amp \Socket \Socks5SocketConnector ;
27
28
use AssertionError ;
29
+ use GuzzleHttp \Exception \ConnectException ;
28
30
use GuzzleHttp \Promise \Promise ;
29
31
use GuzzleHttp \Promise \PromiseInterface ;
30
32
use GuzzleHttp \Psr7 \Request as GuzzleRequest ;
@@ -121,7 +123,7 @@ public function __invoke(PsrRequest $request, array $options): PromiseInterface
121
123
122
124
/** @psalm-suppress UndefinedVariable Using $promise reference in definition expression. */
123
125
$ promise = new Promise (
124
- function () use (&$ promise , $ future , $ cancellation , $ deferredCancellation ): void {
126
+ function () use (&$ promise , $ future , $ cancellation , $ deferredCancellation, $ request ): void {
125
127
if ($ deferredCancellation ->isCancelled ()) {
126
128
return ;
127
129
}
@@ -138,6 +140,8 @@ function () use (&$promise, $future, $cancellation, $deferredCancellation): void
138
140
if (!$ cancellation ->isRequested ()) {
139
141
$ promise ->reject ($ e );
140
142
}
143
+ } catch (SocketException $ e ) {
144
+ $ promise ->reject (new ConnectException ($ e ->getMessage (), $ request , $ e ));
141
145
} catch (\Throwable $ e ) {
142
146
$ promise ->reject ($ e );
143
147
}
0 commit comments