docs: function(folderPath, callback, level) {
          level = level || 1;
          if (typeof callback !== 'function') {
              throw 'The callback argument must be a valid function.';
          }
  
          var treeTraversed = _promise.deferred();
          var dirContentsReady = _promise.deferred();
  
          function _rejectTraversal() {
              treeTraversed.reject(folderPath);
          };
  
          // Attempt to read the contents of the folder.
          _fs.readdir(folderPath, dirContentsReady.getResolver());
  
          // Handler to handle when the folder contents are ready.
          dirContentsReady.success(function(data) {
              // Create a resolver that will complete the promise after all
              // items have been processed.
              var resolver = treeTraversed.getMultiStepResolver(data.length);
  
              // The contents of the folder have been read. Process them.
              data.forEach(function(item) {
                  var itemStats = _promise.deferred();
                  var itemPath = _path.join(folderPath, item);
  
                  _fs.lstat(itemPath, itemStats.getResolver());
  
                  itemStats.success(function(data) {
                      if (data.isDirectory()) {
                          // Let the listener know that we found an item.
                          callback(itemPath, level, true);
  
                          // Traverse the child folder, and only mark this
                          // activity as completed once the child is finished.
                          mod.traverse(itemPath, callback, level + 1)
                              .success(resolver.stepComplete)
                              .fail(resolver.reject);
                      } else {
                          // Let the listener know that we found an item.
                          callback(itemPath, level, false);
  
                          // Nothing to wait for. Mark the step as completed.
                          resolver.stepComplete();
                      }
  
                      //Could not get child item stats. Traversal failed.
                  }).fail(_rejectTraversal);
              });
  
              // Could not read child items. Traversal failed.
          }).fail(_rejectTraversal);
  
          return treeTraversed.promise();
      }