Promise and callback-based API

The driver supports both promises and callbacks for the asynchronous methods exposed in the Client and Metadata prototypes, you can choose the approach that suits your needs.

Promise-based API

client.execute('SELECT name, email FROM users')
  .then(result => console.log('User with email %s', result.rows[0].email));

When a callback is not provided as the last argument, the driver will return a Promise, without the need to promisify the driver module. Returned promises are instances of Promise global object and are created using the default constructor: new Promise(executor).

In case you want the driver to use a third party Promise module (ie: bluebird) to create the Promise instances, you can optionally provide your own factory method when creating the Client instance, for example:

const BbPromise = require('bluebird');
const client = new Client({
  contactPoints,
  localDataCenter,
  promiseFactory: BbPromise.fromCallback
});

Callback-based API

All asynchronous methods of the driver supports an optional callback as the last argument.

client.execute('SELECT name, email FROM users', function(err, result) {
  assert.ifError(err);
  console.log('User with email %s', result.rows[0].email);
});