JSFiddle - React, Tailwind, and code Playground

JavaScript

var obj = {count: 0, maxCount: 5};

function doAnything() {
  return new Promise(function(res, rej) {
		setTimeout(function() {
			obj.count++;
			console.log("doAnything", obj.count);
      res();
    }, 1000);
	});
}

function isNeedContinue(obj) {
  console.log("isNeedContinue", obj, obj.count <  obj.maxCount);
  return obj.count <  obj.maxCount;
}

(function _f() {
	if (isNeedContinue(obj)) {
		doAnything().then(function() {
    	console.log("Что-то еще...");
			_f();
    }, function() {
    	console.log("Fail");
    });
  } else {
  	console.log("Done");
  }
})();