Skip to content

Commit 899753f

Browse files
committed
Handle all async errors
1 parent 5638178 commit 899753f

File tree

4 files changed

+52
-25
lines changed

4 files changed

+52
-25
lines changed

handlers/app.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,13 @@ const region = 'us-east-1'
77

88
const createHandler = stage => (event, context, callback) => {
99
const handleRequest = (err, options) => {
10-
if (err) return callback(err)
11-
const req = formatReq(event)
12-
getResponse(req, options, callback)
10+
try {
11+
if (err) return callback(err)
12+
const req = formatReq(event)
13+
getResponse(req, options, callback)
14+
} catch (error) {
15+
callback(error)
16+
}
1317
}
1418
getOptions({ region, stage, name }, handleRequest)
1519
}

lib/config.js

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,27 @@ const getOptionsFromParameters = params => {
2828
}
2929

3030
const getParameters = ({ region, stage, name }, callback) => {
31-
const ssm = new SSM({ region })
32-
const Names = parameterNames.map(
33-
k => ['/app', name, stage, k].join('/')
34-
)
35-
const params = { Names }
36-
ssm.getParameters(params, callback)
31+
try {
32+
const ssm = new SSM({ region })
33+
const Names = parameterNames.map(
34+
k => ['/app', name, stage, k].join('/')
35+
)
36+
const params = { Names }
37+
ssm.getParameters(params, callback)
38+
} catch (error) {
39+
callback(error)
40+
}
3741
}
3842

3943
const getOptions = ({ region, stage, name } = {}, callback) => {
4044
getParameters({ region, stage, name }, (err, data) => {
41-
if (err) return callback(err)
42-
const options = getOptionsFromParameters(data.Parameters)
43-
callback(null, options)
45+
try {
46+
if (err) return callback(err)
47+
const options = getOptionsFromParameters(data.Parameters)
48+
callback(null, options)
49+
} catch (error) {
50+
callback(error)
51+
}
4452
})
4553
}
4654

lib/response.js

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,25 @@ const createContent = require('./content')
66

77
const getBody = (content, callback) => {
88
gzip(content, (err, buffer) => {
9-
if (err) return callback(err)
10-
const body = buffer.toString('base64')
11-
callback(null, body)
9+
try {
10+
if (err) return callback(err)
11+
const body = buffer.toString('base64')
12+
callback(null, body)
13+
} catch (error) {
14+
callback(error)
15+
}
1216
})
1317
}
1418

15-
const getIndexResponse = (options, callback) => {
16-
const content = createContent(options)
19+
const getIndexResponse = (content, callback) => {
1720
getBody(content, (err, body) => {
18-
if (err) return callback(err)
19-
const response = createIndexResponse(body)
20-
callback(null, response)
21+
try {
22+
if (err) return callback(err)
23+
const response = createIndexResponse(body)
24+
callback(null, response)
25+
} catch (error) {
26+
callback(error)
27+
}
2128
})
2229
}
2330

@@ -56,11 +63,19 @@ const createFaviconResponse = ({
5663
})
5764

5865
const getResponse = (req, options, callback) => {
59-
const opts = extendOptions(options)
60-
if (req.url === '/favicon.ico') {
61-
return callback(null, createFaviconResponse(opts))
66+
try {
67+
const opts = extendOptions(options)
68+
69+
if (req.url === '/favicon.ico') {
70+
const favicon = createFaviconResponse(opts)
71+
return callback(null, favicon)
72+
}
73+
74+
const content = createContent(options)
75+
getIndexResponse(content, callback)
76+
} catch (error) {
77+
callback(error)
6278
}
63-
getIndexResponse(opts, callback)
6479
}
6580

6681
const extendOptions = options => {

server.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ const server = createServer((req, res) => {
4444

4545
getResponse(req, options, (err, response) => {
4646
try {
47-
if (err) handleError(err)
47+
if (err) return handleError(err)
4848
handleResponse(response)
4949
} catch (error) {
5050
handleError(error)

0 commit comments

Comments
 (0)