text: const { join, resolve } = require('path');
  const { readdir, stat } = require('fs');
  const { promisify } = require('util');
  
  const toStats = promisify(stat);
  const toRead = promisify(readdir);
  
  module.exports = async function list(dir, callback, pre='') {
  	dir = resolve('.', dir);
  	await toRead(dir).then(arr => {
  		return Promise.all(
  			arr.map(str => {
  				let abs = join(dir, str);
  				return toStats(abs).then(stats => {
  					return stats.isDirectory()
  						? list(abs, callback, join(pre, str))
  						: callback(join(pre, str), abs, stats)
  				});
  			})
  		);
  	});
  }
  