then(policy().
вместо этого возможно нужно написать
then(policy).
А вообще без кода функций contract, policy, invoice трудно судить, к тому же если contract возвращает promise - можно обойтись без создания внешнего promise.
UPDATE: переписал бы так
function dc(data) {
var filename = 'Test';
function contract() {
return new Promise(function(resolve, reject) {
var stream = ...
stream.on('finish', function() {
console.log('stream is done');
resolve();
});
})
}
function policy() {
var stream = ...
var filename = ...
return new Promise(function(resolve, reject) {
stream.on('finish', function() {
console.log('Policy is done');
resolve(filename);
});
})
}
function invoice() {
var stream = ...
return new Promise(function(resolve, reject) {
stream.on('finish', function() {
console.log('Invoice is done');
resolve();
});
})
}
return contract().then(invoice).then(policy).then(function() {
console.log(filename);
return filename;
}).catch(function(error){ console.error(error); });
}
P.S. читать лучше
YDKJS