From cee90ff512934f19846f33b73ef5e68d714d0c1e Mon Sep 17 00:00:00 2001 From: Luke Kuzmish <42181698+cosmastech@users.noreply.github.com> Date: Sat, 29 Nov 2025 11:01:41 -0500 Subject: [PATCH 1/6] remove footgun --- src/Illuminate/Http/Client/PendingRequest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Illuminate/Http/Client/PendingRequest.php b/src/Illuminate/Http/Client/PendingRequest.php index c3c7e2c39624..7eae4733526c 100644 --- a/src/Illuminate/Http/Client/PendingRequest.php +++ b/src/Illuminate/Http/Client/PendingRequest.php @@ -888,7 +888,7 @@ public function delete(string $url, $data = []) * @param int|null $concurrency * @return array */ - public function pool(callable $callback, ?int $concurrency = null) + public function pool(callable $callback, ?int $concurrency = 2) { $results = []; From 603c8083a26cd177a8643bb19fbd4b36dae09267 Mon Sep 17 00:00:00 2001 From: Luke Kuzmish <42181698+cosmastech@users.noreply.github.com> Date: Sat, 29 Nov 2025 11:12:28 -0500 Subject: [PATCH 2/6] allow passing callable --- src/Illuminate/Http/Client/PendingRequest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Illuminate/Http/Client/PendingRequest.php b/src/Illuminate/Http/Client/PendingRequest.php index 7eae4733526c..5c4a64e7fb1e 100644 --- a/src/Illuminate/Http/Client/PendingRequest.php +++ b/src/Illuminate/Http/Client/PendingRequest.php @@ -885,10 +885,10 @@ public function delete(string $url, $data = []) * Send a pool of asynchronous requests concurrently. * * @param (callable(\Illuminate\Http\Client\Pool): mixed) $callback - * @param int|null $concurrency + * @param int|null|(callable(non-negative-int): int) $concurrency * @return array */ - public function pool(callable $callback, ?int $concurrency = 2) + public function pool(callable $callback, int|callable|null $concurrency = 2) { $results = []; From c5e072fc35c3f1f436ce45ffff24d6f4ba0db3b5 Mon Sep 17 00:00:00 2001 From: Luke Kuzmish <42181698+cosmastech@users.noreply.github.com> Date: Sat, 29 Nov 2025 11:18:11 -0500 Subject: [PATCH 3/6] Update PendingRequest.php --- src/Illuminate/Http/Client/PendingRequest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Illuminate/Http/Client/PendingRequest.php b/src/Illuminate/Http/Client/PendingRequest.php index 5c4a64e7fb1e..7eae4733526c 100644 --- a/src/Illuminate/Http/Client/PendingRequest.php +++ b/src/Illuminate/Http/Client/PendingRequest.php @@ -885,10 +885,10 @@ public function delete(string $url, $data = []) * Send a pool of asynchronous requests concurrently. * * @param (callable(\Illuminate\Http\Client\Pool): mixed) $callback - * @param int|null|(callable(non-negative-int): int) $concurrency + * @param int|null $concurrency * @return array */ - public function pool(callable $callback, int|callable|null $concurrency = 2) + public function pool(callable $callback, ?int $concurrency = 2) { $results = []; From 336337fbd7b1c2f601d09bc407ba75b30d7bcc32 Mon Sep 17 00:00:00 2001 From: Luke Kuzmish Date: Sat, 29 Nov 2025 11:43:43 -0500 Subject: [PATCH 4/6] explicitly run the pool in series --- tests/Http/HttpClientTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Http/HttpClientTest.php b/tests/Http/HttpClientTest.php index febc488c3a91..2aa862a169f5 100644 --- a/tests/Http/HttpClientTest.php +++ b/tests/Http/HttpClientTest.php @@ -3534,7 +3534,7 @@ public function testItCanEnforceFakingInThePool() return [ $pool->get('https://laravel.com'), ]; - }); + }, null); } public function testPreventingStrayRequests() From 3fe93b934a53c8b8ea87a70cd396173a8d2d1440 Mon Sep 17 00:00:00 2001 From: Luke Kuzmish Date: Sat, 29 Nov 2025 11:47:33 -0500 Subject: [PATCH 5/6] match behavior --- tests/Http/HttpClientTest.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/Http/HttpClientTest.php b/tests/Http/HttpClientTest.php index 2aa862a169f5..aac1afb564cf 100644 --- a/tests/Http/HttpClientTest.php +++ b/tests/Http/HttpClientTest.php @@ -3527,14 +3527,14 @@ public function testItCanEnforceFakingInThePool() $this->assertSame(200, $responses[0]->status()); $this->assertSame(200, $responses[1]->status()); - $this->expectException(StrayRequestException::class); - $this->expectExceptionMessage('Attempted request to [https://laravel.com] without a matching fake.'); - - $this->factory->pool(function (Pool $pool) { + [$exception] = $this->factory->pool(function (Pool $pool) { return [ $pool->get('https://laravel.com'), ]; - }, null); + }); + + $this->assertInstanceOf(StrayRequestException::class, $exception); + $this->assertEquals('Attempted request to [https://laravel.com] without a matching fake.', $exception->getMessage()); } public function testPreventingStrayRequests() From bdaf4e0b428ae5516602b8151bd463669f993790 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Sat, 29 Nov 2025 15:32:00 -0600 Subject: [PATCH 6/6] Update PendingRequest.php --- src/Illuminate/Http/Client/PendingRequest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Illuminate/Http/Client/PendingRequest.php b/src/Illuminate/Http/Client/PendingRequest.php index 7eae4733526c..854cab79dc20 100644 --- a/src/Illuminate/Http/Client/PendingRequest.php +++ b/src/Illuminate/Http/Client/PendingRequest.php @@ -888,7 +888,7 @@ public function delete(string $url, $data = []) * @param int|null $concurrency * @return array */ - public function pool(callable $callback, ?int $concurrency = 2) + public function pool(callable $callback, ?int $concurrency = 0) { $results = [];