Вот такой вариант:
<html>
<head>
</head>
<body>
<button id="b1">1 response </button>
<button id="b2">2 response </button>
<script>
Request={
counter: 0,
create: function(){
var o=Object.create(this)
o.request=new XMLHttpRequest()
return o
},
open: function(){this.request.open("GET", this.url); return this},
send: function(){this.request.send(null); return this},
set: function(){
this.request.onreadystatechange=function(){
if(this.request.readyState==4&&this.request.status==200) {
this.onResponse()
this.step()
}
}.bind(this)
return this
},
step: function(){
if(this.limit<=this.counter) return this.onEnd()
this.counter++
this.create().open().set().send()
},
start: function(){this.step()}
}
makeRequests=function(limit){
return function(){
var request=Request.create()
request.url="http://myhost/foo"
request.onResponse=function(){doSomethingWith(this.request.responseText)}
request.onEnd=function(){location.reload()},
request.limit=limit
request.start()
}}
b1.onclick=makeRequests(1)
b2.onclick=makeRequests(2)
</script>
</body>
</html>