reentrancy issues with BrowserIO.js
|Reported by:||hp@…||Owned by:||anonymous|
In watchInFlight(), the code does:
doLoad(tif.req, tif.http, tif.url, tif.query, tif.useCache); this.inFlight.splice(x, 1);
But doLoad() is calling out to application code, so this.inFlight can be modified during the callout. Or, I believe what's happening in my case is that I call another xmlhttprequest, which goes back over this.inFlight and calls doLoad() a second time for the same request.
There are various possible fixes, the smallest is maybe to swap those two lines, another is to have an "already did load" flag that doLoad checks, ... anyway the idea would be to guarantee that only one load/error function invocation happens per request.