diff --git a/src/helpers.js b/src/helpers.js index da18443..dfb955a 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -183,38 +183,42 @@ module.exports.downloadFile = (url, destination, progressCallback, completeCallb responseType: 'stream', }) .then(response => { - const total = parseInt(response.headers['content-length'], 10); - if (total === 0) { - completeCallback(Error('No data available for download')); - } else { - const stream = fs.createWriteStream(destination); + try { + const total = parseInt(response.headers['content-length'], 10); + if (total === 0) { + completeCallback(Error('No data available for download')); + } else { + const stream = fs.createWriteStream(destination); - let downloaded = 0; - response.data.on('data', (chunk) => { - stream.write(Buffer.from(chunk)); - downloaded += chunk.length; - if (progressCallback) { - progressCallback((downloaded / total * 100.0).toFixed(2)); - } - }); - - response.data.on('end', () => { - stream.end(() => { - if (downloaded === 0) { - completeCallback(Error('Received 0 bytes')); - } else if (downloaded !== total) { - completeCallback(Error('Received incorrect number of bytes')); - } else { - completeCallback(); + let downloaded = 0; + response.data.on('data', (chunk) => { + stream.write(Buffer.from(chunk)); + downloaded += chunk.length; + if (progressCallback) { + progressCallback((downloaded / total * 100.0).toFixed(2)); } }); - }); - response.data.on('error', error => { - stream.end(() => { - completeCallback(error); + response.data.on('end', () => { + stream.end(() => { + if (downloaded === 0) { + completeCallback(Error('Received 0 bytes')); + } else if (downloaded !== total) { + completeCallback(Error('Received incorrect number of bytes')); + } else { + completeCallback(); + } + }); }); - }); + + response.data.on('error', error => { + stream.end(() => { + completeCallback(error); + }); + }); + } + } catch (error) { + completeCallback(error); } }) .catch(error => {