Skip to content

Commit a3f36c7

Browse files
authored
handle server timeouts (projectwallace#42)
1 parent 088e6ae commit a3f36c7

File tree

2 files changed

+23
-11
lines changed

2 files changed

+23
-11
lines changed

api/_chromium.js

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,27 @@ export const extractCss = async url => {
2020
await page.coverage.startCSSCoverage().catch(() => { })
2121

2222
url = normalizeUrl(url, {stripWWW: false})
23-
const response = await page.goto(url, {waitUntil: 'networkidle0'})
23+
let response
24+
25+
try {
26+
response = await page.goto(url, {
27+
waitUntil: 'networkidle0',
28+
timeout: 9000
29+
})
30+
} catch (error) {
31+
await browser.close()
32+
33+
console.error(error.name)
34+
console.error(error.stack)
35+
throw new Error(`There was an error retrieving CSS from ${url}. No response received from server.`)
36+
}
2437

2538
// Make sure that we only try to extract CSS from valid pages.
2639
// Bail out if the response is an invalid request (400, 500)
2740
if (response.status() >= 400) {
2841
await browser.close()
29-
return Promise.reject(
30-
new Error(
31-
`There was an error retrieving CSS from ${url}.\n\tHTTP status code: ${response.statusCode} (${response.statusText})`
32-
)
42+
throw new Error(
43+
`There was an error retrieving CSS from ${url}.\n\tHTTP status code: ${response.statusCode} (${response.statusText})`
3344
)
3445
}
3546

@@ -41,11 +52,11 @@ export const extractCss = async url => {
4152
const css = await response.text()
4253
await browser.close()
4354

44-
return Promise.resolve([{
55+
return [{
4556
type: 'file',
4657
href: url,
4758
css
48-
}])
59+
}]
4960
}
5061

5162
// Coverage contains a lot of <style> and <link> CSS,
@@ -89,6 +100,9 @@ export const extractCss = async url => {
89100
// Filter out empty style="" attributes
90101
.filter(Boolean)
91102
})
103+
104+
await browser.close()
105+
92106
const inlineCss = inlineCssRules
93107
.map(rule => `[x-extract-css-inline-style] { ${rule} }`)
94108
.map(css => ({type: 'inline', href: url, css}))
@@ -109,7 +123,5 @@ export const extractCss = async url => {
109123
.concat(styleSheetsApiCss)
110124
.concat(inlineCss)
111125

112-
await browser.close()
113-
114-
return Promise.resolve(resources)
126+
return resources
115127
}

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)