JSFiddle - React, Tailwind, and code Playground

JavaScript

var myTest = function(i, deferred) {
  if (!deferred) {
    deferred = $.Deferred();
  }

  if (i < 3) {
    i++;
    console.log("Recursion (" + i + ")!");
    return myTest(i, deferred);
  } else if (i === 3) {
    console.log("Resolving!");
    return deferred.resolve("Woohoo, reached " + i + "!");
  }
}

myTest(0).done(function(result) {
  console.log(result);
});