Almost, I think you'd need something like this (not tested):
await new Promise((resolve, reject) => {
driver.elementIdClick(elementId, (result) => {
if (result.status !== 0) {
const err = new Error('An error occurred...');
// create a proper error object here, this is just an example...
err.result = result;
return reject(err);
}
resolve(result);
});
});