glynnbird commented on code in PR #314:
URL: https://github.com/apache/couchdb-nano/pull/314#discussion_r1827524578


##########
lib/nano.js:
##########
@@ -168,29 +163,48 @@ module.exports = exports = function dbScope (cfg) {
     delete responseHeaders.server
     delete responseHeaders['content-length']
 
-    /* if (opts.dontParse) {
-      parsed = body
-    } else {
-      try { parsed = JSON.parse(body) } catch (err) { parsed = body }
-    } */
-
     if (statusCode >= 200 && statusCode < 400) {
-      log({ err: null, body, headers: responseHeaders })
-      if (resolve) {
-        resolve(body)
+      // collect response
+      const ct = response.headers.get('content-type')
+      let retval = ''
+      if (ct === 'application/json') {
+        try {
+          retval = await response.json()
+        } catch {
+          // do nothing
+        }
+      } else if (ct && (ct.startsWith('text/') || 
ct.startsWith('multipart/related'))) {
+        retval = await response.text()
+      } else {
+        const ab = await response.arrayBuffer()
+        retval = Buffer.from(ab)
       }
-      if (callback) {
-        callback(null, body, responseHeaders)
+
+      // log
+      log({ err: null, retval, headers: responseHeaders })
+
+      // promisey
+      if (resolve) {
+        resolve(retval)
+      } else if (callback) {
+        // callbacky
+        callback(null, retval, Object.fromEntries(response.headers))
       }
       return
     }
 
     // cloudant stacktrace
+    try {
+      body = await response.json()
+    } catch (e) {
+      body = ''
+    }
+
     if (typeof body === 'string') {
       body = { message: body }
     }
 
-    if (!body.message && (body.reason || body.error)) {
+    if (body && !body.message && (body.reason || body.error)) {

Review Comment:
   tbh. I can't remember why the code is like that. I think it goes back to 
Nano when it was built on request, then built on axios and now built on fetch 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@couchdb.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to