Ah, the difference is that `serverError` itself may be a string instead of an object. This happens if Neo4j throws an exception in its pipeline before it knows how to properly return JSON objects for errors. (Or it could happen if the error comes from a proxy in between.)

With your changes so far, `serverError.message` in this case is `'(no message)'` now, but there's no `serverError.exception` defined, so the error we throw itself has a message of `'(no message)'`. That's okay, but previously, the error we threw had the string `serverError` as its message. Maybe the best would be something like `"Neo4j error: #{serverError}"` now.

Here's my proposal your current [lines 87-100](https://github.com/Acconut/node-neo4j/blob/0b056897f06fd5e5988a8cb97d82fbc6ed6c3477/lib/util.coffee#L87-L100):

```coffee
if serverError.exception and not serverError.message
    serverError.message = '(no message)'

status = error.statusCode

error = new Error
error.name = 'Neo4jError'

if serverError.exception
    error.message = "Neo4j #{serverError.exception}: #{serverError.message}"
    error.exception = serverError.exception
else
    error.message = "Neo4j unrecognized error: #{serverError.message or serverError}"
```

WDYT?