Design goals
API
While libcouchbase exposes the binary Memcached protocol and API, the client SDKs (and therefore also the Node.js SDK) should reflect the well-known Memcached protocol, which resembles the ASCII API.
Error handling
Asynchronous operations, where the user provides a callback function, should always reserve the first argument for errors (Error object). The implication is that in these cases, we do not throw exceptions. However, if the user omitted a callback function, (synchronous) errors can only be caught by throwing an exception.
This is common practice in many Node.js libraries, including a lot of APIs internal to Node.js itself.