The code on page 55 in the OpenEdge Development: Mobile Applications book inadvertly left out a variable that must be defined in order for the sample application to create a new progress.data.Session.  The variable cMsg needs to be defined and set to "ok" otherwise, the sample appication will not connect and return data.

The correct code is as follows:

var settings;
var cMsg = "ok";
try {
  /* CHANGE THIS TO POINT TO YOUR SETTINGS SERVICE */
  settings = MyMobileService_dsCustomer_Settings;
 
  pdsession = new progress.data.Session();
 
  var loginResult = pdsession.login(settings.serviceURI,"","");
 
  if (loginResult != progress.data.Session.LOGIN_SUCCESS) {
     console.log('ERROR: Login failed with code: ' + loginResult);
     switch (loginResult) {
          case progress.data.Session.LOGIN_AUTHENTICATION_FAILURE:
            cMsg = 'Invalid user-id or password';
            break;
          case progress.data.Session.LOGIN_GENERAL_FAILURE:
          default:
            cMsg = 'Service is unavailable';
            break;
     }
  }
}
catch (e) {
     cMsg = "Failed to log in";
     console.log(e.stack);
}
if (cMsg != "ok") {
   alert(cMsg);
   return;
}
pdsession.addCatalog(settings.catalogURI);