diff --git a/lib/tasks/dial.js b/lib/tasks/dial.js index 83283316..21f8ad9f 100644 --- a/lib/tasks/dial.js +++ b/lib/tasks/dial.js @@ -216,8 +216,14 @@ class TaskDial extends Task { this.sd = null; } if (this.callSid) sessionTracker.remove(this.callSid); - if (this.listenTask) await this.listenTask.kill(cs); - if (this.transcribeTask) await this.transcribeTask.kill(cs); + if (this.listenTask) { + await this.listenTask.kill(cs); + this.listenTask = null; + } + if (this.transcribeTask) { + await this.transcribeTask.kill(cs); + this.transcribeTask = null; + } this.notifyTaskDone(); } diff --git a/lib/tasks/listen.js b/lib/tasks/listen.js index c0ab67b2..0481fd09 100644 --- a/lib/tasks/listen.js +++ b/lib/tasks/listen.js @@ -60,14 +60,21 @@ class TaskListen extends Task { this._clearTimer(); if (this.ep && this.ep.connected) { this.logger.debug('TaskListen:kill closing websocket'); - await this.ep.forkAudioStop() - .catch((err) => this.logger.info(err, 'TaskListen:kill')); + try { + await this.ep.forkAudioStop() + this.logger.debug('TaskListen:kill successfully closed websocket'); + } catch (err) { + this.logger.info(err, 'TaskListen:kill')); + } } if (this.recordStartTime) { const duration = moment().diff(this.recordStartTime, 'seconds'); this.results.dialCallDuration = duration; } - if (this.transcribeTask) await this.transcribeTask.kill(cs); + if (this.transcribeTask) { + await this.transcribeTask.kill(cs); + this.transcribeTask = null; + } this.ep && this._removeListeners(this.ep); this.notifyTaskDone(); } diff --git a/lib/utils/http-requestor.js b/lib/utils/http-requestor.js index a3c1c32e..6b9bb84c 100644 --- a/lib/utils/http-requestor.js +++ b/lib/utils/http-requestor.js @@ -127,7 +127,7 @@ class HttpRequestor extends BaseRequestor { err.statusCode = statusCode; throw err; } - if (headers['content-type'].includes('application/json')) { + if (headers['content-type']?.includes('application/json')) { buf = await body.json(); } if (newClient) newClient.close();