This is an automated email from the ASF dual-hosted git repository.
kenhuuu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/master by this push:
new 78623dbe45 Use .on and .off for unexpected-response listener (#2969)
78623dbe45 is described below
commit 78623dbe45e2a26c0fa4b68b1aac2daa64e174c9
Author: KyleBoyer <[email protected]>
AuthorDate: Fri Jan 24 18:41:47 2025 -0600
Use .on and .off for unexpected-response listener (#2969)
* Use .on and .off for unexpected-response listener
* Only include body in error message if it is non-null
---
.../javascript/gremlin-javascript/lib/driver/connection.ts | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/connection.ts
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/connection.ts
index 594b62a9dd..c7a9f49de4 100644
---
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/connection.ts
+++
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/driver/connection.ts
@@ -199,8 +199,10 @@ export default class Connection extends EventEmitter {
this._ws!.addEventListener('open', this.#handleOpen);
// @ts-expect-error
this._ws!.addEventListener('error', this.#handleError);
+ // The following listener needs to use `.on` and `.off` because the `ws`
package's addEventListener only accepts certain event types
+ // Ref:
https://github.com/websockets/ws/blob/8.16.0/lib/event-target.js#L202-L241
// @ts-expect-error
- this._ws!.addEventListener('unexpected-response',
this.#handleUnexpectedResponse);
+ this._ws!.on('unexpected-response', this.#handleUnexpectedResponse);
// @ts-expect-error
this._ws!.addEventListener('message', this.#handleMessage);
// @ts-expect-error
@@ -315,12 +317,14 @@ export default class Connection extends EventEmitter {
chunks.push(data instanceof Buffer ? data : Buffer.from(data));
});
res.on('end', () => {
- resolve(Buffer.concat(chunks));
+ resolve(chunks.length ? Buffer.concat(chunks) : null);
});
res.on('error', reject);
});
// @ts-ignore
- const errorMessage = `Unexpected server response code ${res.statusCode}
with body:\n${body.toString()}`;
+ const statusCodeErrorMessage = `Unexpected server response code
${res.statusCode}`;
+ // @ts-ignore
+ const errorMessage = body ? `${statusCodeErrorMessage} with
body:\n${body.toString()}` : statusCodeErrorMessage;
const error = new Error(errorMessage);
this.#handleError({
error,
@@ -446,8 +450,10 @@ export default class Connection extends EventEmitter {
this._ws?.removeEventListener('open', this.#handleOpen);
// @ts-expect-error
this._ws?.removeEventListener('error', this.#handleError);
+ // The following listener needs to use `.on` and `.off` because the `ws`
package's addEventListener only accepts certain event types
+ // Ref:
https://github.com/websockets/ws/blob/8.16.0/lib/event-target.js#L202-L241
// @ts-expect-error
- this._ws?.removeEventListener('unexpected-response',
this.#handleUnexpectedResponse);
+ this._ws?.off('unexpected-response', this.#handleUnexpectedResponse);
// @ts-expect-error
this._ws?.removeEventListener('message', this.#handleMessage);
// @ts-expect-error