Cómo obtener una variable devuelta a través de múltiples funciones - Javascript / jQuery

Esta pregunta en resumen es averiguar cómo pasar variables entre funciones de JavaScript sin: devolver variables, pasar parámetros entre funciones primarias, usar variables globales y forzar a la función 1 a esperar a que termine la función 2. Descubrí una solución jQuery y publiqué a continuación (en la sección de respuestas).

Publicación anterior: inicializo un conjunto de cuatro funciones, cada una de las cuales se llama de manera diferente. Al final, necesito que el producto modificado final (una matriz) vuelva a la función de inicialización.

Las variables globales no obligan a la función inicial a esperar. Y devolverlo cuatro veces hacia atrás tampoco funciona. ¿Cómo devuelve una variable modificada a su función de inicialización, si no puede devolverla? ¿O por qué no regresa?

(el laberinto comienza a lasinitFunctionA, termina enfunctionD)

classOne = {
  initFunctionA : function() {
    classTwo.functionB(functionD, array);
    // I NEED ACCESS TO ARRAY2 HERE
  },
  functionD : function(data, array) {
    var array2 = // modifications to array
  }
}

{...}

classTwo = {
  functionB : function(callback, array) {
    $.ajax({
      success: function(ret){
        classTwo.functionC(ret, callback, array)
      }
    });
  },
  functionC : function(ret, callback, array) {
     callback(ret.data.x, array);
  }
}

Respuestas a la pregunta(5)

Su respuesta a la pregunta