Sziasztok!

Tudnátok valami működő megoldást arra, hogy egy ajax-os adatküldés ha nem telesül, pl. a szerver nem válaszol, akkor 1-2 másodperc múlva küldje újra és újra ? (de azért ne a végtelenségig)

Most nekem ilyen kódom van ami nem jó mert a // xmlhttp2.abort(); a kódban nem működik, a console hibát ír (talán azt, hogy nem létező változó), ezért kommenteltem ki, de a másik nagy baj, az hogy a visszajövő adatok feldolgozása csak 1x kellene hogy megtörténjen a "pótküldés" esetén is, de ez jelenleg nem így van és már annyira nyakatekertnek érzem ezt a kódot, hogy inkább elfelejteném ezt.

Kód:
var xmlhttp;
var xmlhttp2;
	
function adatkuldes(parmit,adat){
  if (window.XMLHttpRequest) {xmlhttp=new XMLHttpRequest();}
  else {xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
       potkuldes = "nem";
	   // xmlhttp2.abort();
	   document.getElementById("adatvissza").innerHTML=xmlhttp.responseText;
	   if (parmit.substr(0,2) == "cs") {sajatlapcserem();}
	   else if (parmit == "me") {sajatchatem('mehet');}
	   else if (parmit == "passz") {sajatchatem('passz');}
	   else if (parmit == "kozosbe" || parmit == "megtartom") {gombeltuntet();}
	   valaszfrissit();
	}
  }
 xmlhttp.open("GET","adatfogad1.php?mit="+parmit+"&d="+adat, true);
 xmlhttp.send();
 potkuldes = "igen";
 setTimeout(function(){potajax(parmit,adat);},2200)
}

// ha nincs szerver válaszfogadás, 2s után meghívja az adatkuldes
function potajax(potmit,potadat) {
  if (potkuldes != "nem") {
    // xmlhttp.abort();
	  if (window.XMLHttpRequest) {xmlhttp2=new XMLHttpRequest();}
	  else {xmlhttp2=new ActiveXObject("Microsoft.XMLHTTP");}
	  xmlhttp2.onreadystatechange=function() {
		if (xmlhttp2.readyState==4 && xmlhttp2.status==200) {
		   document.getElementById("adatvissza").innerHTML=xmlhttp2.responseText;
		   if (potmit.substr(0,2) == "cs") {sajatlapcserem();}
		   else if (potmit == "me") {sajatchatem('mehet');}
		   else if (potmit == "passz") {sajatchatem('passz');}
		   else if (potmit == "kozosbe" || potmit == "megtartom") {gombeltuntet();}
		   valaszfrissit();
		}
	  }
	xmlhttp2.open("GET","adatfogad1.php?mit="+potmit+"&d="+potadat, true);
	xmlhttp2.send();
  }
}