diff options
Diffstat (limited to 'std/node/_fs/_fs_appendFile.ts')
-rw-r--r-- | std/node/_fs/_fs_appendFile.ts | 49 |
1 files changed, 23 insertions, 26 deletions
diff --git a/std/node/_fs/_fs_appendFile.ts b/std/node/_fs/_fs_appendFile.ts index f3b44dd7b..48b05ff80 100644 --- a/std/node/_fs/_fs_appendFile.ts +++ b/std/node/_fs/_fs_appendFile.ts @@ -21,34 +21,31 @@ export function appendFile( } validateEncoding(options); - let rid = -1; - new Promise(async (resolve, reject) => { - try { - if (typeof pathOrRid === "number") { - rid = pathOrRid; - } else { - const mode: number | undefined = isFileOptions(options) - ? options.mode - : undefined; - const flag: string | undefined = isFileOptions(options) - ? options.flag - : undefined; - - if (mode) { - //TODO rework once https://github.com/denoland/deno/issues/4017 completes - notImplemented("Deno does not yet support setting mode on create"); - } - const file = await Deno.open(pathOrRid, getOpenOptions(flag)); - rid = file.rid; - } - - const buffer: Uint8Array = new TextEncoder().encode(data); + const buffer: Uint8Array = new TextEncoder().encode(data); + new Promise((resolve, reject) => { + if (typeof pathOrRid === "number") { + rid = pathOrRid; + Deno.write(rid, buffer).then(resolve).catch(reject); + } else { + const mode: number | undefined = isFileOptions(options) + ? options.mode + : undefined; + const flag: string | undefined = isFileOptions(options) + ? options.flag + : undefined; - await Deno.write(rid, buffer); - resolve(); - } catch (err) { - reject(err); + if (mode) { + //TODO rework once https://github.com/denoland/deno/issues/4017 completes + notImplemented("Deno does not yet support setting mode on create"); + } + Deno.open(pathOrRid, getOpenOptions(flag)) + .then(({ rid: openedFileRid }) => { + rid = openedFileRid; + return Deno.write(openedFileRid, buffer); + }) + .then(resolve) + .catch(reject); } }) .then(() => { |