async readdirDeep(dir) {
    const subdirs = await this._readdir(dir)
    const files = await Promise.all(
      subdirs.map(async subdir => {
        const res = dir + '/' + subdir
        return (await this._stat(res)).isDirectory()
          ? this.readdirDeep(res)
          : res
      })
    )
    return files.reduce((a, f) => a.concat(f), [])
  }
Return a flast list of all the files nested inside a directory

Based on an elegant concurrent recursive solution from SO
https://stackoverflow.com/a/45130990/2168416