|
1 | 1 | import VError from '@voiceflow/verror';
|
2 | 2 | import type { AxiosError } from 'axios';
|
3 |
| -import Promise from 'bluebird'; |
4 | 3 | import { NextFunction, Request, Response } from 'express';
|
5 | 4 | import * as ExpressValidator from 'express-validator';
|
6 | 5 | import { HttpStatus } from 'http-status';
|
@@ -196,27 +195,27 @@ class ResponseBuilder {
|
196 | 195 | nextCalled = () => next(route);
|
197 | 196 | };
|
198 | 197 |
|
199 |
| - await Promise.try(() => (typeof dataPromise === 'function' ? (dataPromise as any)(req, res, nextCheck) : dataPromise)) |
200 |
| - .then((data) => { |
201 |
| - if (data instanceof Error) { |
202 |
| - return ResponseBuilder.errorResponse(data, failureCodeOverride, req); |
203 |
| - } |
204 |
| - |
205 |
| - return ResponseBuilder.okResponse(data, successCodeOverride); |
206 |
| - }) |
207 |
| - .catch((err) => ResponseBuilder.errorResponse(err, failureCodeOverride, req)) |
208 |
| - .then((output) => { |
209 |
| - if (res.headersSent) { |
210 |
| - return; |
211 |
| - } |
212 |
| - |
213 |
| - // eslint-disable-next-line promise/always-return |
214 |
| - if (nextCalled) { |
215 |
| - nextCalled(); |
216 |
| - return; |
217 |
| - } |
| 198 | + let output: ErrorResponse<unknown> | ReturnType<typeof ResponseBuilder['okResponse']>; |
| 199 | + |
| 200 | + try { |
| 201 | + const data = await (typeof dataPromise === 'function' ? (dataPromise as any)(req, res, nextCheck) : dataPromise); |
| 202 | + |
| 203 | + output = |
| 204 | + data instanceof Error |
| 205 | + ? ResponseBuilder.errorResponse(data, failureCodeOverride, req) |
| 206 | + : ResponseBuilder.okResponse(data, successCodeOverride); |
| 207 | + } catch (err) { |
| 208 | + output = ResponseBuilder.errorResponse(err, failureCodeOverride, req); |
| 209 | + } |
| 210 | + |
| 211 | + if (!res.headersSent) { |
| 212 | + if (nextCalled) { |
| 213 | + // TypeScript doesn't know that calling nextCheck will define nextCalled as a function |
| 214 | + (nextCalled as () => void)(); |
| 215 | + } else { |
218 | 216 | res.status(output.code as number).json(output.data);
|
219 |
| - }); |
| 217 | + } |
| 218 | + } |
220 | 219 | }) as any;
|
221 | 220 | }
|
222 | 221 | /* eslint-enable no-param-reassign */
|
|
0 commit comments