feat(client): add proxy object for request.agent
for compatibility
#1839
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.
In node environments, the code in
node/agent.js
creates a proxy object aroundAgent
so that it can be instantiated without using thenew
keyword. The equivalent code for the browser version (inclient.js
) definesrequest.agent
as() => new Agent()
.In supertest, the
TestAgent
attempts to subclassAgent
with the callObject.setPrototypeOf(TestAgent.prototype, Agent.prototype);
. This works in the node environment but not in the browser version, because in the browser version() => new Agent()
is not an object and has an undefined prototype, leading to the error messageObject prototype may only be an Object or null: undefined
.Wrap
request.agent
in a proxy object for the client/browser case so that supertest can also use the library in browser contexts without error.Checklist