>>260
それインターフェースがおかしい
subReaderは、新しいファイル名と前のデータを引数にすべきだろ
最後のconsole.logだってそうなってるんだから
第一どうやって単体テストすんねん

subReaderには前のデータをこうやって渡す
reader('data1.txt')
.then(data => subReader('data2.txt', data))
.then(data => subReader('data3.txt', data))
.then(data => subReader('data4.txt', data))
.then(data => subReader('data5.txt', data))
.then(function(data) {console.log(data)})
.catch(function(error) {console.log(error)})

そうすりゃPromiseを返すだけになる
Promiseを使うプログラミングは
言い換えるとPromiseを返す関数を作ることを意味する
元のsubReaderはPromiseを返していない

function subReader(file, previous) {
return new Promise(function(resolve, reject){
fs.readFile(file, function(error, data){
if (error) reject(error);
resolve(previous + data);
});
});
}

ちなみにここではPromiseを返しているが単なる値を返してもいい所がミソな
Promise or ただの値を変える関数を.thenでつなげていける