NodeSchool(http://nodeschool.io/ja/ )のLearnyounodeの章をやっていてわからないところがあったので質問します。

ASYNCジャグリング (13問中9問目)
今回の問題は前回のもの(HTTP Collect) とよく似た問題です。http.get() を使って GET リクエスト の結果をコンソールに出力するアプリです。
前回のコマンドライン引数は、1つの URL でしたが今回は3つの URL にしてください。
3つの GET リクエストのデータを集め、全てコンソールに書き出してください。
今回の出力には文字カウントは不要です。文字列だけで良いです。
コマンドライン引数 (URL)
1つにつき1つの文字列を出力してください。出力する文字列は、コマンドライン引
数の順番と一致させることを厳守してください。

という問題で模範回答はこちら(https://github.com/workshopper/learnyounode/blob/master/exercises/juggling_async/solution/solution.js )にあります。このコードが正しいというのは理解できます。

知りたいのは私の書いたコードは下記の通りなのですが、最後から2行目のループから抜け出せなくて正しく動きません。

    var http = require('http');

    flag = [];

    for(i=2; i<=4; i++){
      http.get(process.argv[i], function(res){
        var body = '';
        res.setEncoding('utf8');
        res.on('data', function(chunk){
          body += chunk;
        });
        res.on('end', function(){
          flag.push(body);
        });
      });
    }

    while(flag.length != 3){}
    console.log(flag);

私のコールバックか変数のスコープの認識に誤りがあるかと思うのですが教えていただけますでしょうか。