[8.x] Do not execute beforeSending callbacks twice #37116
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As #37105 outlines, the HTTP client executes the
beforeSending
callbacks twice when sending a request.This is due to both
buildBeforeSendingHandler
andbuildRecordHandler
running therunBeforeSendingCallbacks
method, and both thisbuild*
methods being added to the request middleware stack.framework/src/Illuminate/Http/Client/PendingRequest.php
Lines 786 to 797 in 5a65f25
framework/src/Illuminate/Http/Client/PendingRequest.php
Lines 804 to 811 in 5a65f25
framework/src/Illuminate/Http/Client/PendingRequest.php
Lines 818 to 834 in 5a65f25
This PR removes the redundant call from
buildRecordHandler
(as it is ran afterbuildBeforeSendingHandler
in the middleware stack) and simply calling$promise = $handler($request, $options);
to keep it as a "after" middleware, using the example in Guzzle docs:https://docs.guzzlephp.org/en/stable/handlers-and-middleware.html#middleware
Closes #37105