1111
1212namespace  Discord \Http ;
1313
14+ use  Composer \InstalledVersions ;
1415use  Discord \Http \Exceptions \BadRequestException ;
1516use  Discord \Http \Exceptions \ContentTooLongException ;
1617use  Discord \Http \Exceptions \InvalidTokenException ;
2425use  Psr \Log \LoggerInterface ;
2526use  React \EventLoop \LoopInterface ;
2627use  React \Promise \Deferred ;
27- use  React \Promise \ExtendedPromiseInterface ;
28+ use  React \Promise \PromiseInterface ;
2829use  SplQueue ;
2930
3031/** 
@@ -127,6 +128,11 @@ class Http
127128     */ 
128129    protected  $ waiting0 ;
129130
131+     /** 
132+      * Whether react/promise v3 is used, if false, using v2 
133+      */ 
134+     protected  $ promiseV3true ;
135+ 
130136    /** 
131137     * Http wrapper constructor. 
132138     * 
@@ -141,6 +147,10 @@ public function __construct(string $token, LoopInterface $loop, LoggerInterface
141147        $ this logger  = $ logger
142148        $ this driver  = $ driver
143149        $ this queue  = new  SplQueue ;
150+ 
151+         if  (str_starts_with (InstalledVersions::getVersion ('react/promise ' ), '0.3. ' )) {
152+             $ this promiseV3  = true ;
153+         }
144154    }
145155
146156    /** 
@@ -160,9 +170,9 @@ public function setDriver(DriverInterface $driver): void
160170     * @param mixed           $content 
161171     * @param array           $headers 
162172     * 
163-      * @return ExtendedPromiseInterface  
173+      * @return PromiseInterface  
164174     */ 
165-     public  function  get ($ url$ contentnull , array  $ headersExtendedPromiseInterface 
175+     public  function  get ($ url$ contentnull , array  $ headersPromiseInterface 
166176    {
167177        if  (! ($ urlinstanceof  Endpoint)) {
168178            $ urlbind ($ url
@@ -178,9 +188,9 @@ public function get($url, $content = null, array $headers = []): ExtendedPromise
178188     * @param mixed           $content 
179189     * @param array           $headers 
180190     * 
181-      * @return ExtendedPromiseInterface  
191+      * @return PromiseInterface  
182192     */ 
183-     public  function  post ($ url$ contentnull , array  $ headersExtendedPromiseInterface 
193+     public  function  post ($ url$ contentnull , array  $ headersPromiseInterface 
184194    {
185195        if  (! ($ urlinstanceof  Endpoint)) {
186196            $ urlbind ($ url
@@ -196,9 +206,9 @@ public function post($url, $content = null, array $headers = []): ExtendedPromis
196206     * @param mixed           $content 
197207     * @param array           $headers 
198208     * 
199-      * @return ExtendedPromiseInterface  
209+      * @return PromiseInterface  
200210     */ 
201-     public  function  put ($ url$ contentnull , array  $ headersExtendedPromiseInterface 
211+     public  function  put ($ url$ contentnull , array  $ headersPromiseInterface 
202212    {
203213        if  (! ($ urlinstanceof  Endpoint)) {
204214            $ urlbind ($ url
@@ -214,9 +224,9 @@ public function put($url, $content = null, array $headers = []): ExtendedPromise
214224     * @param mixed           $content 
215225     * @param array           $headers 
216226     * 
217-      * @return ExtendedPromiseInterface  
227+      * @return PromiseInterface  
218228     */ 
219-     public  function  patch ($ url$ contentnull , array  $ headersExtendedPromiseInterface 
229+     public  function  patch ($ url$ contentnull , array  $ headersPromiseInterface 
220230    {
221231        if  (! ($ urlinstanceof  Endpoint)) {
222232            $ urlbind ($ url
@@ -232,9 +242,9 @@ public function patch($url, $content = null, array $headers = []): ExtendedPromi
232242     * @param mixed           $content 
233243     * @param array           $headers 
234244     * 
235-      * @return ExtendedPromiseInterface  
245+      * @return PromiseInterface  
236246     */ 
237-     public  function  delete ($ url$ contentnull , array  $ headersExtendedPromiseInterface 
247+     public  function  delete ($ url$ contentnull , array  $ headersPromiseInterface 
238248    {
239249        if  (! ($ urlinstanceof  Endpoint)) {
240250            $ urlbind ($ url
@@ -251,9 +261,9 @@ public function delete($url, $content = null, array $headers = []): ExtendedProm
251261     * @param mixed    $content 
252262     * @param array    $headers 
253263     * 
254-      * @return ExtendedPromiseInterface  
264+      * @return PromiseInterface  
255265     */ 
256-     public  function  queueRequest (string  $ methodEndpoint $ url$ contentarray  $ headersExtendedPromiseInterface 
266+     public  function  queueRequest (string  $ methodEndpoint $ url$ contentarray  $ headersPromiseInterface 
257267    {
258268        $ deferrednew  Deferred ();
259269
@@ -318,21 +328,21 @@ protected function guessContent(&$content)
318328     * @param Request  $request 
319329     * @param Deferred $deferred 
320330     * 
321-      * @return ExtendedPromiseInterface  
331+      * @return PromiseInterface  
322332     */ 
323-     protected  function  executeRequest (Request $ requestDeferred $ deferrednull ): ExtendedPromiseInterface 
333+     protected  function  executeRequest (Request $ requestDeferred $ deferrednull ): PromiseInterface 
324334    {
325335        if  ($ deferrednull ) {
326336            $ deferrednew  Deferred ();
327337        }
328338
329339        if  ($ this rateLimit ) {
330-             $ deferredreject ($ this rateLimit );
340+             $ deferredreject (new   RateLimitException ( $ this rateLimit ) );
331341
332342            return  $ deferredpromise ();
333343        }
334344
335-         $ this driver ->runRequest ($ requestdone (function  (ResponseInterface $ responseuse  ($ request$ deferred
345+         $ this driver ->runRequest ($ request{ $ this -> promiseV3  ?  ' then '  :  ' done ' } (function  (ResponseInterface $ responseuse  ($ request$ deferred
336346            $ datajson_decode ((string ) $ responsegetBody ());
337347            $ statusCode$ responsegetStatusCode ();
338348
@@ -383,7 +393,7 @@ protected function executeRequest(Request $request, Deferred $deferred = null):
383393                    });
384394                }
385395
386-                 $ deferredreject ($ rateLimitisGlobal () ? $ this rateLimit  : $ rateLimit
396+                 $ deferredreject (new   RateLimitException ( $ rateLimitisGlobal () ? $ this rateLimit  : $ rateLimit) );
387397            }
388398            // Bad Gateway 
389399            // Cloudflare SSL Handshake error 
0 commit comments