Recursive asynchronous file operations for node.js