indexzero/http-agent — Issue #10: Race condition when using addUrl 
Author: tttp
Created: 2012-01-22 23:11:16+00:00
State: open

Hi,

The event stop is sent even so all the pages aren't nexed. It's probably something related of me addUrl(s) in the nextEvent.

For what I saw (ie. might be way off), the issue is that

HttpAgent.prototype.next = function (url) {
if (this._running) {
// If the URL passed in exists, remove it
// from our _unvisited collection
var index = this._unvisited.indexOf(url);
if (index !== -1) {
this._unvisited = this._unvisited.splice(index, 1);
}
var shouldVisit = url || this._unvisited.length > 0;

// TODO: Be more robust than just 'GET'
if (shouldVisit) {
this.url = url || this._unvisited.shift();
this._makeRequest(this.url);
}
else {
this.stop();
}
}
}

if the last url to visit calls addUrl on the next (called by makeRequest), the stop event has already been sent.

Not quite sure how to deal with it in a clean way (not even that sure that's the issue).

I will try to add a new 'next' event listener and try to manipulate the unvisited from there. Any idea more than welcome.