From e15c773b2c9a3bc37562737eeb8c7ee38b63d076 Mon Sep 17 00:00:00 2001 From: tamaina Date: Tue, 3 Jan 2023 13:43:37 +0000 Subject: [PATCH] enhance logger and error handling --- packages/backend/src/core/HttpRequestService.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/backend/src/core/HttpRequestService.ts b/packages/backend/src/core/HttpRequestService.ts index b2d78762a6..d3a0963ed5 100644 --- a/packages/backend/src/core/HttpRequestService.ts +++ b/packages/backend/src/core/HttpRequestService.ts @@ -59,6 +59,7 @@ export class UndiciFetcher { connect: (process.env.NODE_ENV !== 'production' && typeof args.agentOptions.connect !== 'function') ? (options, cb) => { undici.buildConnector(args.agentOptions.connect as undici.buildConnector.BuildOptions)(options, (err, socket) => { + this.logger?.debug('Socket connector called', socket); if (err) { this.logger?.debug(`Socket error`, err); cb(new Error(`Error while socket connecting\n${err}`), null); @@ -80,6 +81,7 @@ export class UndiciFetcher { connect: (process.env.NODE_ENV !== 'production' && typeof (args.proxy?.options?.connect ?? args.agentOptions.connect) !== 'function') ? (options, cb) => { undici.buildConnector((args.proxy?.options?.connect ?? args.agentOptions.connect) as undici.buildConnector.BuildOptions)(options, (err, socket) => { + this.logger?.debug('Socket connector called', socket); if (err) { this.logger?.debug(`Socket error`, err); cb(new Error(`Error while socket connecting\n${err}`), null); @@ -116,7 +118,10 @@ export class UndiciFetcher { const res = await undici.fetch(url, { dispatcher: this.getAgentByUrl(new URL(url), privateOptions.bypassProxy), ...options, - }) + }).catch((err) => { + this.logger?.error('fetch error', err); + throw new StatusError('Resource Unreachable', 500, 'Resource Unreachable'); + }); if (!res.ok && !privateOptions.noOkError) { throw new StatusError(`${res.status} ${res.statusText}`, res.status, res.statusText); } @@ -304,8 +309,8 @@ export class HttpRequestService { @bindThis public getConnectorWithIpCheck(connector: undici.buildConnector.connector, checkIp: IpChecker): undici.buildConnector.connectorAsync { return (options, cb) => { - this.logger.debug('socket connecting...') connector(options, (err, socket) => { + this.logger.debug('Socket connector called', socket); if (err) { this.logger.error(`Socket error`, err) cb(new Error(`Error while socket connecting\n${err}`), null);