feat: add timeout support to RequestContext and isomorphic-fetch #22526
+38
−1
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.
This PR adds first-class timeout support to the typescript-fetch generator so users can prevent requests from hanging indefinitely.
Why?
The current typescript-fetch client doesn’t offer any way to cancel or fail a request after a specified time.
When Kubernetes or any API becomes slow, consumers have no built-in way to enforce a timeout leading to stalled network calls.
This PR introduces a simple, lightweight solution.
What this PR does
Adds a withTimeout() wrapper
-Wraps fetch with an AbortController
-Automatically aborts the request when timeout limit is reached
-Forwards user-provided abort signals correctly
Extends RequestContext
-Adds a timeout?: number property
-Ensures timeout travels through the request flow cleanly
Integrates timeout into the generated IsomorphicFetchHttpLibrary
-Replaces direct use of fetch
-Uses withTimeout(fetch, request.getTimeout())
so all requests automatically inherit the timeout setting