Comments (3)
Hey, @alfdocimo! Thank you for your interest in making this library better!
This change is done solely in the mocked response context, as we're propagating the listeners/callbacks in case of the original request to that original XMLHttpRequest instance.
You're right, we should dispatch the loadstart
as soon as we start handling a mocked response. Ideally, after this if
statement:
I think everything else could be left as-is, the order looks correct:
- Headers received.
- ReadyStateChange to propagate the received headers.
- progress.
- load.
- loadend.
If you have a chance, please open a pull request with the changes so we could review it and make this improvement happen! Thank you.
from interceptors.
Hi there!
I've been doing a little bit of research on this because I could use a bit of context myself and I really would like to understand what this does behind the scenes.
As stated by @marcosvega91 on #75, loadstart
should be triggered prior to progress
?
Seems like the order would imply that the triggerReadyStateChange
event needs to happen first, followed by the loadstart
event, and then by the progress
event.
this.triggerReadyStateChange()
// Initiates the request
this.trigger('loadstart')
// ...
if (mockedResponse.body && this.response) {
// ...
this.trigger('progress', {
loaded: bodyBuffer.length,
total: bodyBuffer.length,
})
}
this.readyState = this.DONE
I believe that (and please correct me if I'm wrong) both error
and abort
are being handled depending on whether there's an exception in middlewareException
? Would this mean (according to the order) that abort
needs to come prior to error
?
this.abort()
this.trigger('error')
Which only leaves
this.trigger('load')
this.trigger('loadend')
Left in the sequence, and only leaves me wondering if the timeout
event should be implemented at all given that is a mocked response? I see that it happens if the response is not mocked and proceeds to fetch the actual URL.
Thanks for your attention and would love to contribute to this awesome library! 🙌
from interceptors.
Awesome, thanks for clearing it out! Opened #102 🙌
from interceptors.
Related Issues (20)
- ReadableStream cannot be properly polyfilled in this engine HOT 5
- Error using BatchInterceptor with browserInterceptors in browser environment. HOT 7
- `Response.type` throws in miniflare-like environments HOT 1
- Support "CONNECT" requests (in proxies) HOT 11
- Support HTTP2 HOT 3
- Intercepted fetch results in the the process never exiting / hangs Mocha tests
- error listener get called twice on mocked error with sync handler HOT 2
- Use "urlToHttpOptions" from "node:url"
- Header keys for requests are being converted to lowercase
- ReferenceError: TextEncoder is not defined when running (jest) tests HOT 4
- Treat exceptions as 500 responses instead of a "Failed to fetch" error HOT 7
- XMLHttpRequestController creates bad URL when location exists but href not set HOT 4
- Support aborting intercepted requests HOT 6
- WebSocket: Outgoing client events have the wrong "currentTarget" HOT 2
- WebSocket: Decide how to handle actual server errors
- Flaky: `modules/http/response/readable-stream.test.ts`
- ClientRequestInterceptor incorrectly encodes basic authentication header HOT 15
- Abstract request emitting logic
- Await all "response" listeners to finish HOT 4
- Protocol "https:" not supported. Expected "http:" when using "proxy-agent" HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from interceptors.