--- request.o/request.js	2015-11-17 17:16:30.000000000 +0200
+++ request/request.js	2015-12-06 11:03:15.013225931 +0200
@@ -68,20 +68,6 @@
 
 }
 
-// Function for properly handling a connection error
-function connectionErrorHandler(error) {
-  var socket = this
-  if (socket.res) {
-    if (socket.res.request) {
-      socket.res.request.emit('error', error)
-    } else {
-      socket.res.emit('error', error)
-    }
-  } else {
-    socket._httpMessage.emit('error', error)
-  }
-}
-
 // Return a simpler request object to allow serialization
 function requestToJSON() {
   var self = this
@@ -793,11 +779,6 @@
     self.emit('socket', socket)
   })
 
-  self.on('end', function() {
-    if ( self.req.connection ) {
-      self.req.connection.removeListener('error', connectionErrorHandler)
-    }
-  })
   self.emit('request', self.req)
 }
 
@@ -832,11 +813,6 @@
     debug('response end', self.uri.href, response.statusCode, response.headers)
   })
 
-  // The check on response.connection is a workaround for browserify.
-  if (response.connection && response.connection.listeners('error').indexOf(connectionErrorHandler) === -1) {
-    response.connection.setMaxListeners(0)
-    response.connection.once('error', connectionErrorHandler)
-  }
   if (self._aborted) {
     debug('aborted', self.uri.href)
     response.resume()
@@ -1009,8 +985,10 @@
         // response.body = buffer
         // can't move to this until https://github.com/rvagg/bl/issues/13
         response.body = buffer.slice()
-      } else {
+      } else try {
         response.body = buffer.toString(self.encoding)
+      } catch (e) {
+        response.body = buffer.toString()
       }
     } else if (strings.length) {
       // The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation.
@@ -1044,7 +1022,7 @@
     self.req.abort()
   }
   else if (self.response) {
-    self.response.abort()
+    self.response.destroy()
   }
 
   self.emit('abort')
@@ -1160,7 +1138,8 @@
   if (typeof val === 'boolean') {
     if (self.body !== undefined) {
       if (!/^application\/x-www-form-urlencoded\b/.test(self.getHeader('content-type'))) {
-        self.body = safeStringify(self.body)
+        if (typeof self.body !== 'string')
+          self.body = safeStringify(self.body)
       } else {
         self.body = self._qs.rfc3986(self.body)
       }
