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

Reply via email to