After a lot of googling I have not been able to confirm the correct approach to this problem. The following code runs as expected but I have a grave feeling that I am not approaching this in the correct way, and I am setting myself up for problems.
The following code is initiated by the main app.js file and is passed a location to start loading XML files from and processing into a mongoDB
exports.processProfiles = function(path) {
  var deferrer  = q.defer();
  
  q(dataService.deleteProfiles())  // simple mongodb call to empty the Profiles collection
    .then(function(deleteResult) {
      return loadFilenames(path); // method to load all filenames in the given path using fs
    })
    .then(function(filenames) {
      // now we have all the file names lets load and save
      filenames.forEach(function(filename) {
                  
        // Here is where i think the problem is!
        // kick off another promise chain for the dynamically sized array of files to process
        q(loadFileContent(path, filename)) // first we load the data in the file
          .then(function(inboundFile) {
            // then parse XML structure to my new shiny JSON structure
            // and ask Mongo to store it for me
              return dataService.createProfile(processProfileXML(filename, inboundFile));
          })
          .done(function(result) {
            console.log(result);
          })
        });
      })
      .catch(function(err) {
        deferrer.reject('Unable to Process Profile records : ' + err);
      })
      .done(function() {
        deferrer.resolve('Profile Processing Completed');
      });
   return deferrer.promise;
}Whilst this code works these are my main concerns but cannot solve them on my own after a few hours of Google and reading.
1) Is this blocking? The read out to the console is difficult to understand if this is running asynchronously as i want it to - i think it is but advice on if I am doing something fundamentally wrong would be great
2) Is having a nested promise a bad idea, should I be linking it to the outter promise - I have tried but could not get anything to compile or run.
 
    