docs: function _explore(start, callfile, calldir, options, done) {
      const {fs, followSymlink, resolve} = options;
  
      let count = 0;
  
      function take() {
          ++count;
      }
  
      function give(err) {
          if (--count === 0 || err) {
              done(err);
          }
      }
  
      // Start process
      take();
      fs.lstat(start, (err, stats) => {
          let linkStats;
          if (err) {
              give(err);
              return;
          }
  
          if (stats.isSymbolicLink() && (followSymlink || resolve)) {
              linkStats = stats;
              fs.realpath(start, (err, resolvedPath) => {
                  if (err) {
                      give(err);
                      return;
                  }
  
                  fs.lstat(resolvedPath, (err, stats) => {
                      if (err) {
                          // invalid symlink
                          callfile(start, stats, give);
                          return;
                      }
  
                      __doExplore(start, callfile, calldir, options, stats, linkStats, take, give);
                  });
              });
          } else {
              __doExplore(start, callfile, calldir, options, stats, linkStats, take, give);
          }
      });
  }