Percorrendo os arquivos do FileReader, a saída sempre contém o último valor do loop

Estou usando a API FileReader para ler arquivos no loca

<input type="file" id="filesx" name="filesx[]" onchange="readmultifiles(this.files)" multiple="" />

<script>
function readmultifiles(files) {
    var ret = "";
    var ul = document.querySelector("#bag>ul");
    while (ul.hasChildNodes()) {
        ul.removeChild(ul.firstChild);
    }
    for (var i = 0; i < files.length; i++)  //for multiple files
    {
        var f = files[i];
        var name = files[i].name;
        alert(name);
        var reader = new FileReader();  
        reader.onload = function(e) {  
            // get file content  
            var text = e.target.result;
            var li = document.createElement("li");
            li.innerHTML = name + "____" + text;
            ul.appendChild(li);
        }
        reader.readAsText(f,"UTF-8");
    }
}
</script>

Se a entrada incluir 2 arquivos:

file1 ---- "content1"
file2 ---- "content2"

Recebo esta saída:

file2__content1
file2__content2

Como corrigir o código a ser exibido:

file1__content1
file2__content2

questionAnswers(8)

yourAnswerToTheQuestion