¿Cómo hacer que la función asincrónica personalizada de JavaScript sin usar E / S?

Tengo el código JS a continuación y quiero que sea un comportamiento asincrónico, pero no se comporta como asíncrono. He pasado una devolución de llamada también para comportarme como devolución de llamada. Sugiera cómo realizar una sincronización asincrónica sin utilizar la función settimeout o cualquier solicitud http.

console.log('1');
cc('', function(d){ 
    console.log(d); 
});
console.log('3');

function cc(err, callback){
    for(var i=1; i<=900000000; i++){}

    console.log(i);
    if(typeof callback == 'function'){
        callback('2.5');
    }
}

// salida que viene

1
900000001
2.5
3

//Esperad

1
3
900000001
2.5

Respuestas a la pregunta(1)

Su respuesta a la pregunta