code: function readAndSaveFileListing(bundle) {
  		debugLS('in readAndSaveFileListing');
  		var defered = q.defer();
  		self.readArray('FILE_IO_NAME_READ', bundle.FILE_IO_NAME_READ_LEN.val)
  		.then(function(fileNameChars) {
  			debugLS('in readAndSaveFileListing raw', fileNameChars);
  			var fileName = '';
  			fileNameChars.forEach(function(fileNameChar) {
  				if(fileNameChar !== 0) {
  					fileName += String.fromCharCode(fileNameChar);
  				}
  			});
  			// Save the file name.
  			if(!bundle.noFilesOnCard) {
  				bundle.fileNames.push(fileName);
  			}
  			debugLS('Debug CWD:', bundle.cwd, fileName);
  			var filePath = path.posix.join(bundle.cwd, fileName);
  			var pathInfo = path.posix.parse(filePath);
  			var fileInfo = {
  				'name': fileName,
  				'ext': pathInfo.ext,
  				'path': filePath,
  				'pathInfo': pathInfo,
  				'isDirectory': bundle.FILE_IO_ATTRIBUTES.isDirectory,
  				'isFile': bundle.FILE_IO_ATTRIBUTES.isFile,
  				'size': bundle.FILE_IO_SIZE.val,
  				'sizeStr': bundle.FILE_IO_SIZE.str,
  			};
  			// Save the file's info.
  			if(!bundle.noFilesOnCard) {
  				bundle.files.push(fileInfo);
  			}
  			
  			debugLS('in readAndSaveFileListing fileInfo', fileInfo);
  			defered.resolve(bundle);
  		}, function(err) {
  			debugLS('in readAndSaveFileListing err', err);
  			bundle.isError = true;
  			bundle.errorStep = 'readAndSaveFileListing';
  			bundle.error = modbusMap.getErrorInfo(err);
  			bundle.errorCode = err;
  			defered.reject(bundle);
  		});
  		return defered.promise;
  	}
docs: Step #3 in "readdir" Operation