Recursive asynchronous file and directory operations for Node.js