var sys = require("util") , assert = require("assert") , http = require("http") , XMLHttpRequest = require("../lib/XMLHttpRequest").XMLHttpRequest , xhr; // Test server var server = http.createServer(function (req, res) { var body = (req.method != "HEAD" ? "Hello World" : ""); res.writeHead(200, { "Content-Type": "text/plain", "Content-Length": Buffer.byteLength(body) }); // HEAD has no body if (req.method != "HEAD") { res.write(body); } res.end(); assert.equal(onreadystatechange, true); assert.equal(readystatechange, true); assert.equal(removed, true); sys.puts("done"); this.close(); }).listen(8000); xhr = new XMLHttpRequest(); // Track event calls var onreadystatechange = false; var readystatechange = false; var removed = true; var removedEvent = function() { removed = false; }; xhr.onreadystatechange = function() { onreadystatechange = true; }; xhr.addEventListener("readystatechange", function() { readystatechange = true; }); // This isn't perfect, won't guarantee it was added in the first place xhr.addEventListener("readystatechange", removedEvent); xhr.removeEventListener("readystatechange", removedEvent); xhr.open("GET", "http://localhost:8000"); xhr.send();