code: function init(email, password, account, role, applicationId, nsVersion) {
              if (!email)
                  throw 'email is required';
              if (!password)
                  throw 'password is required';
              if (!account)
                  throw 'account is required';
              if (!role)
                  throw 'role is required';
              self.email = email;
              self.password = password;
              self.account = account;
              self.role = role;
  
              if (self.applicationId && !nsVersion) {
                  nsVersion = self.nsVersionLatestKnown
              }
              self.nsVersion = nsVersion || '2015_1';
  
              let nsVersionLaterThan2015_2 = parseInt(self.nsVersion.replace('_', '.'), 10) > 2015.19;
  
              self.applicationId = applicationId;
              if (nsVersionLaterThan2015_2 && !self.applicationId) {
                  self.log('WARNING - using suitetalk greater than 2015_2 requires that you also provide an applicationId which you didn\'t');
              }
  
              self.globalApplicationIdFragment = self.applicationId ? `<applicationInfo xmlns="urn:messages_${self.nsVersion}.platform.webservices.netsuite.com"><applicationId xmlns="urn:core_${self.nsVersion}.platform.webservices.netsuite.com">${applicationId}</applicationId></applicationInfo>` : ``;
  
              var deferred = Q.defer();
  
              if (self.hostname) {
                  deferred.resolve();
              } else {
                  restlet.getDataCenter(email, password, account, role).then(function (dataCenter) {
                      self.hostname = path.basename(dataCenter.dataCenterURLs.webservicesDomain);
                      deferred.resolve();
                  }).catch((ex) => { self.log('getDataCenter', ex) });
              }
  
              return deferred.promise;
          }
docs: Public Implementations: 
  @param {String} email
  @param {String} password
  @param {String} account
  @param {String} role
  @param {String} applicationId
  @param {String} nsVersion something like '2017_2'. If you use 2015_2 or later you could also need to indicate an application id. If ommited and no applicationId is passed 2015_1 is used, otherwhise the latest known that currently is 2017_2