old_contents: // How to use:
  // getValidation("Example,CSV,content\na,b,c\n")
  //  .then(function(validation) {console.log(validation)})
  
  function getValidation(content) {
    request = require('request');
    content = new Buffer(content).toString("base64");
    content = "editor.csv;data:text/csv;base64," + content;
    return new Promise(function(resolve, reject) {
      request.post("http://csvlint.io/package.json", { formData: {"files_data[]": content } }, function(error, response, body) {
  
        if (error) return reject(error);
  
        var packageURL = JSON.parse(response.body).package.url;
        var interval = setInterval(function() {
          request.get(packageURL + ".json", function(error, response, body) {
            try {
              var validationURL = JSON.parse(body).package.validations[0].url;
              clearInterval(interval);
              request.get(validationURL + ".json", function(error, response, body) {
                if (error) return reject(error);
                resolve(JSON.parse(body));
              });
            } catch(e) {}
          });
        }, 1000);
  
      });
    });
  }
  
  function validate() {
    data = hot.getData().map(function(d) { return d.join(",") }).join("\n")
    getValidation(data).then(function(json_validation) {
      errors = json_validation.validation.errors
      warnings = json_validation.validation.warnings
      info_messages = json_validation.validation.info
      console.error(errors)
      console.warn(warnings)
      console.info(info_messages);
    });
  }
  
new_contents: // How to use:
  // getValidation("Example,CSV,content\na,b,c\n")
  //  .then(function(validation) {console.log(validation)})
  
  function getValidation(content) {
    request = require('request');
    content = new Buffer(content).toString("base64");
    content = "editor.csv;data:text/csv;base64," + content;
    return new Promise(function(resolve, reject) {
      request.post("http://csvlint.io/package.json", { formData: {"files_data[]": content } }, function(error, response, body) {
  
        if (error) return reject(error);
  
        var packageURL = JSON.parse(response.body).package.url;
        var interval = setInterval(function() {
          request.get(packageURL + ".json", function(error, response, body) {
            try {
              var validationURL = JSON.parse(body).package.validations[0].url;
              clearInterval(interval);
              request.get(validationURL + ".json", function(error, response, body) {
                if (error) return reject(error);
                resolve(JSON.parse(body));
              });
            } catch(e) {}
          });
        }, 1000);
  
      });
    });
  }
  
  // Splits validation returned from CSVLint into errors, warnings and info messages
  
  function validate() {
    data = hot.getData().map(function(d) { return d.join(",") }).join("\n")
    getValidation(data).then(function(json_validation) {
      errors = json_validation.validation.errors
      warnings = json_validation.validation.warnings
      info_messages = json_validation.validation.info
      console.error(errors)
      console.warn(warnings)
      console.info(info_messages);
    });
  }
  
subject: Comment explanation of validate()