diff --git a/src/serve_data.js b/src/serve_data.js index 5c51cde..4acda69 100644 --- a/src/serve_data.js +++ b/src/serve_data.js @@ -37,7 +37,15 @@ module.exports = function(options, repo, params, id, styles) { var source; var sourceInfoPromise = new Promise(function(resolve, reject) { source = new mbtiles(mbtilesFile, function(err) { + if (err) { + reject(err); + return; + } source.getInfo(function(err, info) { + if (err) { + reject(err); + return; + } tileJSON['name'] = id; tileJSON['format'] = 'pbf'; @@ -176,9 +184,7 @@ module.exports = function(options, repo, params, id, styles) { return res.send(info); }); - return new Promise(function(resolve, reject) { - sourceInfoPromise.then(function() { - resolve(app); - }); + return sourceInfoPromise.then(function() { + return app; }); }; diff --git a/src/serve_font.js b/src/serve_font.js index dbd25e9..b9ec76e 100644 --- a/src/serve_font.js +++ b/src/serve_font.js @@ -17,13 +17,19 @@ module.exports = function(options, allowedFonts) { var existingFonts = {}; var fontListingPromise = new Promise(function(resolve, reject) { fs.readdir(options.paths.fonts, function(err, files) { + if (err) { + reject(err); + return; + } files.forEach(function(file) { fs.stat(path.join(fontPath, file), function(err, stats) { - if (!err) { - if (stats.isDirectory() && - fs.existsSync(path.join(fontPath, file, '0-255.pbf'))) { - existingFonts[path.basename(file)] = true; - } + if (err) { + reject(err); + return; + } + if (stats.isDirectory() && + fs.existsSync(path.join(fontPath, file, '0-255.pbf'))) { + existingFonts[path.basename(file)] = true; } }); }); @@ -54,9 +60,7 @@ module.exports = function(options, allowedFonts) { ); }); - return new Promise(function(resolve, reject) { - fontListingPromise.then(function() { - resolve(app); - }); + return fontListingPromise.then(function() { + return app; }); }; diff --git a/src/serve_rendered.js b/src/serve_rendered.js index 10ef459..cdd4296 100644 --- a/src/serve_rendered.js +++ b/src/serve_rendered.js @@ -122,12 +122,18 @@ module.exports = function(options, repo, params, id, dataResolver) { var existingFonts = {}; var fontListingPromise = new Promise(function(resolve, reject) { fs.readdir(options.paths.fonts, function(err, files) { + if (err) { + reject(err); + return; + } files.forEach(function(file) { fs.stat(path.join(options.paths.fonts, file), function(err, stats) { - if (!err) { - if (stats.isDirectory()) { - existingFonts[path.basename(file)] = true; - } + if (err) { + reject(err); + return; + } + if (stats.isDirectory()) { + existingFonts[path.basename(file)] = true; } }); }); @@ -740,9 +746,8 @@ module.exports = function(options, repo, params, id, dataResolver) { return res.send(info); }); - return new Promise(function(resolve, reject) { - Promise.all([fontListingPromise, renderersReadyPromise]).then(function() { - resolve(app); - }); + return Promise.all([fontListingPromise, renderersReadyPromise]).then(function() { + return app; }); + }; diff --git a/src/server.js b/src/server.js index 06164ee..f889999 100644 --- a/src/server.js +++ b/src/server.js @@ -246,8 +246,9 @@ function start(opts) { startupPromises.push(new Promise(function(resolve, reject) { fs.readFile(templateFile, function(err, content) { if (err) { - console.error('Template not found:', err); + err = new Error('Template not found: ' + err.message); reject(err); + return; } var compiled = handlebars.compile(content.toString()); @@ -415,6 +416,11 @@ function start(opts) { module.exports = function(opts) { var running = start(opts); + running.startupPromise.catch(function(err) { + console.error(err.message); + process.exit(1); + }); + process.on('SIGINT', function() { process.exit(); }); diff --git a/src/utils.js b/src/utils.js index a63731e..6335a40 100644 --- a/src/utils.js +++ b/src/utils.js @@ -110,9 +110,7 @@ module.exports.getFontsPbf = function(allowedFonts, fontPath, names, range, fall ); }); - return new Promise(function(resolve, reject) { - Promise.all(queue).then(function(values) { - return resolve(glyphCompose.combine(values)); - }, reject); + return Promise.all(queue).then(function(values) { + return glyphCompose.combine(values); }); };