Como tornar a função assíncrona personalizada de javascript sem usar E / S?

Eu tenho abaixo do código JS e quero torná-lo comportamento assíncrono, mas não se comporta como assíncrono. Também tenho um retorno de chamada para me comportar como retorno de chamada. Por favor, sugira como fazer a assíncrona sem usar a função settimeout ou qualquer solicitação 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');
    }
}

// saída vinda

1
900000001
2.5
3

//Esperado

1
3
900000001
2.5

questionAnswers(1)

yourAnswerToTheQuestion