Skip to content

Commit 65b2b25

Browse files
authored
Merge pull request #2053 from cjihrig/promises
src: replace Promise chains with async/await
2 parents 247344e + e8be74d commit 65b2b25

File tree

3 files changed

+98
-92
lines changed

3 files changed

+98
-92
lines changed

src/log.ts

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -135,36 +135,39 @@ export class Log {
135135
requestInit.signal = controller.signal as AbortSignal;
136136
requestInit.method = 'GET';
137137

138-
await fetch(requestURL.toString(), requestInit)
139-
.then((response) => {
140-
const status = response.status;
141-
if (status === 200) {
142-
// TODO: the follow search param still has the stream close prematurely based on my testing
143-
response.body.pipe(stream);
144-
} else if (status === 500) {
145-
const v1status = response.body as V1Status;
146-
const v1code = v1status.code;
147-
const v1message = v1status.message;
148-
if (v1code !== undefined && v1message !== undefined) {
149-
throw new ApiException<undefined | V1Status>(
150-
v1code,
151-
v1message,
152-
v1status,
153-
normalizeResponseHeaders(response),
154-
);
155-
}
156-
} else {
157-
throw new ApiException<undefined>(
158-
status,
159-
'Error occurred in log request',
160-
undefined,
138+
try {
139+
const response = await fetch(requestURL.toString(), requestInit);
140+
const status = response.status;
141+
if (status === 200) {
142+
// TODO: the follow search param still has the stream close prematurely based on my testing
143+
response.body.pipe(stream);
144+
} else if (status === 500) {
145+
const v1status = response.body as V1Status;
146+
const v1code = v1status.code;
147+
const v1message = v1status.message;
148+
if (v1code !== undefined && v1message !== undefined) {
149+
throw new ApiException<undefined | V1Status>(
150+
v1code,
151+
v1message,
152+
v1status,
161153
normalizeResponseHeaders(response),
162154
);
163155
}
164-
})
165-
.catch((err) => {
166-
throw new ApiException<undefined>(err, 'Error occurred in log request', undefined, err);
167-
});
156+
} else {
157+
throw new ApiException<undefined>(
158+
status,
159+
'Error occurred in log request',
160+
undefined,
161+
normalizeResponseHeaders(response),
162+
);
163+
}
164+
} catch (err: any) {
165+
if (err instanceof ApiException) {
166+
throw err;
167+
}
168+
169+
throw new ApiException<undefined>(500, 'Error occurred in log request', undefined, {});
170+
}
168171

169172
return controller;
170173
}

src/metrics.ts

Lines changed: 39 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -88,44 +88,45 @@ export class Metrics {
8888
const requestInit = await this.config.applyToFetchOptions({});
8989
requestInit.method = 'GET';
9090

91-
return fetch(requestURL, requestInit)
92-
.then((response) => {
93-
return Promise.all([response.json(), response.status, response]);
94-
})
95-
.then(([json, status, response]) => {
96-
if (status === 200) {
97-
return json as T;
91+
try {
92+
const response = await fetch(requestURL, requestInit);
93+
const json = await response.json();
94+
const { status } = response;
95+
96+
if (status === 200) {
97+
return json as T;
98+
}
99+
100+
if (status === 500) {
101+
const v1status = json as V1Status;
102+
const v1code = v1status.code;
103+
const v1message = v1status.message;
104+
if (v1code !== undefined && v1message !== undefined) {
105+
throw new ApiException<undefined | V1Status>(
106+
v1code,
107+
v1message,
108+
v1status,
109+
normalizeResponseHeaders(response),
110+
);
98111
}
99-
if (status === 500) {
100-
const v1status = json as V1Status;
101-
const v1code = v1status.code;
102-
const v1message = v1status.message;
103-
if (v1code !== undefined && v1message !== undefined) {
104-
throw new ApiException<undefined | V1Status>(
105-
v1code,
106-
v1message,
107-
v1status,
108-
normalizeResponseHeaders(response),
109-
);
110-
}
111-
}
112-
throw new ApiException<undefined>(
113-
status,
114-
'Error occurred in metrics request',
115-
undefined,
116-
normalizeResponseHeaders(response),
117-
);
118-
})
119-
.catch((e) => {
120-
if (e instanceof ApiException) {
121-
throw e;
122-
}
123-
throw new ApiException<undefined | V1Status>(
124-
500,
125-
`Error occurred in metrics request: ${e.message}`,
126-
{},
127-
{},
128-
);
129-
});
112+
}
113+
114+
throw new ApiException<undefined>(
115+
status,
116+
'Error occurred in metrics request',
117+
undefined,
118+
normalizeResponseHeaders(response),
119+
);
120+
} catch (e: any) {
121+
if (e instanceof ApiException) {
122+
throw e;
123+
}
124+
throw new ApiException<undefined | V1Status>(
125+
500,
126+
`Error occurred in metrics request: ${e.message}`,
127+
{},
128+
{},
129+
);
130+
}
130131
}
131132
}

src/watch.ts

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -50,34 +50,36 @@ export class Watch {
5050
}
5151
};
5252

53-
await fetch(watchURL, requestInit)
54-
.then((response) => {
55-
if (response.status === 200) {
56-
response.body.on('error', doneCallOnce);
57-
response.body.on('close', () => doneCallOnce(null));
58-
response.body.on('finish', () => doneCallOnce(null));
53+
try {
54+
const response = await fetch(watchURL, requestInit);
5955

60-
const lines = createInterface(response.body);
61-
lines.on('error', doneCallOnce);
62-
lines.on('close', () => doneCallOnce(null));
63-
lines.on('finish', () => doneCallOnce(null));
64-
lines.on('line', (line) => {
65-
try {
66-
const data = JSON.parse(line.toString());
67-
callback(data.type, data.object, data);
68-
} catch (ignore) {
69-
// ignore parse errors
70-
}
71-
});
72-
} else {
73-
const error = new Error(response.statusText) as Error & {
74-
statusCode: number | undefined;
75-
};
76-
error.statusCode = response.status;
77-
throw error;
78-
}
79-
})
80-
.catch(doneCallOnce);
56+
if (response.status === 200) {
57+
response.body.on('error', doneCallOnce);
58+
response.body.on('close', () => doneCallOnce(null));
59+
response.body.on('finish', () => doneCallOnce(null));
60+
61+
const lines = createInterface(response.body);
62+
lines.on('error', doneCallOnce);
63+
lines.on('close', () => doneCallOnce(null));
64+
lines.on('finish', () => doneCallOnce(null));
65+
lines.on('line', (line) => {
66+
try {
67+
const data = JSON.parse(line.toString());
68+
callback(data.type, data.object, data);
69+
} catch (ignore) {
70+
// ignore parse errors
71+
}
72+
});
73+
} else {
74+
const error = new Error(response.statusText) as Error & {
75+
statusCode: number | undefined;
76+
};
77+
error.statusCode = response.status;
78+
throw error;
79+
}
80+
} catch (err) {
81+
doneCallOnce(err);
82+
}
8183

8284
return controller;
8385
}

0 commit comments

Comments
 (0)