diff --git a/src/log.ts b/src/log.ts index 84c99a6ec56..c1c79cbb047 100644 --- a/src/log.ts +++ b/src/log.ts @@ -136,36 +136,39 @@ export class Log { requestInit.signal = controller.signal as AbortSignal; requestInit.method = 'GET'; - await fetch(requestURL.toString(), requestInit) - .then((response) => { - const status = response.status; - if (status === 200) { - // TODO: the follow search param still has the stream close prematurely based on my testing - response.body.pipe(stream); - } else if (status === 500) { - const v1status = response.body as V1Status; - const v1code = v1status.code; - const v1message = v1status.message; - if (v1code !== undefined && v1message !== undefined) { - throw new ApiException( - v1code, - v1message, - v1status, - normalizeResponseHeaders(response), - ); - } - } else { - throw new ApiException( - status, - 'Error occurred in log request', - undefined, + try { + const response = await fetch(requestURL.toString(), requestInit); + const status = response.status; + if (status === 200) { + // TODO: the follow search param still has the stream close prematurely based on my testing + response.body.pipe(stream); + } else if (status === 500) { + const v1status = response.body as V1Status; + const v1code = v1status.code; + const v1message = v1status.message; + if (v1code !== undefined && v1message !== undefined) { + throw new ApiException( + v1code, + v1message, + v1status, normalizeResponseHeaders(response), ); } - }) - .catch((err) => { - throw new ApiException(err, 'Error occurred in log request', undefined, err); - }); + } else { + throw new ApiException( + status, + 'Error occurred in log request', + undefined, + normalizeResponseHeaders(response), + ); + } + } catch (err: any) { + if (err instanceof ApiException) { + throw err; + } + + throw new ApiException(500, 'Error occurred in log request', undefined, {}); + } return controller; } diff --git a/src/metrics.ts b/src/metrics.ts index 351df25e989..f988ae40bd7 100644 --- a/src/metrics.ts +++ b/src/metrics.ts @@ -88,44 +88,45 @@ export class Metrics { const requestInit = await this.config.applyToFetchOptions({}); requestInit.method = 'GET'; - return fetch(requestURL, requestInit) - .then((response) => { - return Promise.all([response.json(), response.status, response]); - }) - .then(([json, status, response]) => { - if (status === 200) { - return json as T; + try { + const response = await fetch(requestURL, requestInit); + const json = await response.json(); + const { status } = response; + + if (status === 200) { + return json as T; + } + + if (status === 500) { + const v1status = json as V1Status; + const v1code = v1status.code; + const v1message = v1status.message; + if (v1code !== undefined && v1message !== undefined) { + throw new ApiException( + v1code, + v1message, + v1status, + normalizeResponseHeaders(response), + ); } - if (status === 500) { - const v1status = json as V1Status; - const v1code = v1status.code; - const v1message = v1status.message; - if (v1code !== undefined && v1message !== undefined) { - throw new ApiException( - v1code, - v1message, - v1status, - normalizeResponseHeaders(response), - ); - } - } - throw new ApiException( - status, - 'Error occurred in metrics request', - undefined, - normalizeResponseHeaders(response), - ); - }) - .catch((e) => { - if (e instanceof ApiException) { - throw e; - } - throw new ApiException( - 500, - `Error occurred in metrics request: ${e.message}`, - {}, - {}, - ); - }); + } + + throw new ApiException( + status, + 'Error occurred in metrics request', + undefined, + normalizeResponseHeaders(response), + ); + } catch (e: any) { + if (e instanceof ApiException) { + throw e; + } + throw new ApiException( + 500, + `Error occurred in metrics request: ${e.message}`, + {}, + {}, + ); + } } } diff --git a/src/watch.ts b/src/watch.ts index 86f24ab6ccc..19fcfd52344 100644 --- a/src/watch.ts +++ b/src/watch.ts @@ -51,34 +51,36 @@ export class Watch { } }; - await fetch(watchURL, requestInit) - .then((response) => { - if (response.status === 200) { - response.body.on('error', doneCallOnce); - response.body.on('close', () => doneCallOnce(null)); - response.body.on('finish', () => doneCallOnce(null)); + try { + const response = await fetch(watchURL, requestInit); - const lines = createInterface(response.body); - lines.on('error', doneCallOnce); - lines.on('close', () => doneCallOnce(null)); - lines.on('finish', () => doneCallOnce(null)); - lines.on('line', (line) => { - try { - const data = JSON.parse(line.toString()); - callback(data.type, data.object, data); - } catch (ignore) { - // ignore parse errors - } - }); - } else { - const error = new Error(response.statusText) as Error & { - statusCode: number | undefined; - }; - error.statusCode = response.status; - throw error; - } - }) - .catch(doneCallOnce); + if (response.status === 200) { + response.body.on('error', doneCallOnce); + response.body.on('close', () => doneCallOnce(null)); + response.body.on('finish', () => doneCallOnce(null)); + + const lines = createInterface(response.body); + lines.on('error', doneCallOnce); + lines.on('close', () => doneCallOnce(null)); + lines.on('finish', () => doneCallOnce(null)); + lines.on('line', (line) => { + try { + const data = JSON.parse(line.toString()); + callback(data.type, data.object, data); + } catch (ignore) { + // ignore parse errors + } + }); + } else { + const error = new Error(response.statusText) as Error & { + statusCode: number | undefined; + }; + error.statusCode = response.status; + throw error; + } + } catch (err) { + doneCallOnce(err); + } return controller; }