summaryrefslogtreecommitdiff
path: root/std/node/_fs/_fs_open.ts
diff options
context:
space:
mode:
Diffstat (limited to 'std/node/_fs/_fs_open.ts')
-rw-r--r--std/node/_fs/_fs_open.ts22
1 files changed, 14 insertions, 8 deletions
diff --git a/std/node/_fs/_fs_open.ts b/std/node/_fs/_fs_open.ts
index bf53115de..55ecbdc1e 100644
--- a/std/node/_fs/_fs_open.ts
+++ b/std/node/_fs/_fs_open.ts
@@ -17,7 +17,7 @@ type openFlags =
| "w+"
| "wx+";
-type openCallback = (err: Error | undefined, fd: number) => void;
+type openCallback = (err: Error | null, fd: number) => void;
function convertFlagAndModeToOptions(
flag?: openFlags,
@@ -61,20 +61,26 @@ export function open(
if (["ax", "ax+", "wx", "wx+"].includes(flags || "") && existsSync(path)) {
const err = new Error(`EEXIST: file already exists, open '${path}'`);
- callback(err, 0);
+ (callback as (err: Error) => void)(err);
} else {
if (flags === "as" || flags === "as+") {
+ let err: Error | null = null, res: number;
try {
- const res = openSync(path, flags, mode);
- callback(undefined, res);
+ res = openSync(path, flags, mode);
} catch (error) {
- callback(error, error);
+ err = error;
+ }
+ if (err) {
+ (callback as (err: Error) => void)(err);
+ } else {
+ callback(null, res!);
}
return;
}
- Deno.open(path, convertFlagAndModeToOptions(flags, mode))
- .then((file) => callback(undefined, file.rid))
- .catch((err) => callback(err, err));
+ Deno.open(path, convertFlagAndModeToOptions(flags, mode)).then(
+ (file) => callback(null, file.rid),
+ (err) => (callback as (err: Error) => void)(err),
+ );
}
}