Can this code utilizing promises be written more succinctly?
This is Bluebird, but it's very similar to Q in syntax. Note the automatic promisification and utility methods:

var Promise= require("bluebird");
var fs = Promise.promisify(require("fs"));
var path = require("path");

var dir = "stuff";

var analyseFile = function(fileData, callback) { ... }; // Not important.

var deleteFile = function(filePath, callback) { ... }; // Not important.

var fileOps = {
    analyse: Promise.promisify(analyseFile), // do this _once_
    delete: Promise.promisify(deleteFile)
}

var processStuffDir = function() {
  return fs.readDirAsync(dir).filter(function(files) {
        return path.extname(file) === ".txt";
  }).map(function(file){
        return path.join(dir, file)
  }).map(function(file) {
      return fs.readFileAsync(file).then(function(data) {
          return fileOps.analyse(data.toString());
      }).then(function() {
          return fileOps.delete(filePath);
      });
  }).delay(15000).then(processStuffDir);
};

processStuffDir();