diff options
Diffstat (limited to 'std/node/_fs/_fs_dir.ts')
-rw-r--r-- | std/node/_fs/_fs_dir.ts | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/std/node/_fs/_fs_dir.ts b/std/node/_fs/_fs_dir.ts index 144014cce..543cf14ee 100644 --- a/std/node/_fs/_fs_dir.ts +++ b/std/node/_fs/_fs_dir.ts @@ -1,4 +1,5 @@ import Dirent from "./_fs_dirent.ts"; +import { assert } from "../../testing/asserts.ts"; export default class Dir { private dirPath: string | Uint8Array; @@ -17,25 +18,25 @@ export default class Dir { } read(callback?: Function): Promise<Dirent | null> { - return new Promise(async (resolve, reject) => { - try { - if (!this.asyncIterator) { - this.asyncIterator = Deno.readdir(this.path)[Symbol.asyncIterator](); - } - - const result: Dirent | null = await (await this.asyncIterator?.next()) - .value; - resolve(result ? result : null); - - if (callback) { - callback(null, result ? result : null); - } - } catch (err) { - if (callback) { - callback(err, null); - } - reject(err); + return new Promise((resolve, reject) => { + if (!this.asyncIterator) { + this.asyncIterator = Deno.readdir(this.path)[Symbol.asyncIterator](); } + assert(this.asyncIterator); + this.asyncIterator + .next() + .then(({ value }) => { + resolve(value ? value : null); + if (callback) { + callback(null, value ? value : null); + } + }) + .catch((err) => { + if (callback) { + callback(err, null); + } + reject(err); + }); }); } |