I would add a onreadystatechange function to your xhr object to just call the function again upon completion. Inside your JHR declaration:
xhr.onreadystatechange = function() {
if(xhr.readyState == 4) {
timerId && clearTimeout(timerId);
timerId = setTimeout(startRequest, pollInterval);
}
}
If you were to use setInterval instead you should check the previous xhr object for completion (via its readyState property) before firing another one.