docs: function do_query (self, query, values) {
  	return nr_fcall("nopg:do_query", function() {
  
  		if(!query) { throw new TypeError("invalid: query: " + util.inspect(query)); }
  
  		if(NoPg.debug) {
  			debug.log('query = ', query, '\nvalues = ', values);
  		}
  
  		debug.assert(self).is('object');
  		debug.assert(self._db).is('object');
  		debug.assert(self._db[pg.query]).is('function');
  
  		var start_time = new Date();
  		return self._db[pg.query](query, values).then(function(res) {
  			var end_time = new Date();
  
  			self._record_sample({
  				'event': 'query',
  				'start': start_time,
  				'end': end_time,
  				'query': query,
  				'params': values
  			});
  
  			//debug.log('res = ', res);
  
  			return res;
  		});
  	});
  }