Doesn't this need to be:

    client.hmset('product-' + product.external_id, product)
      .then(function(product) {
        cb(product);
      });

?