Skip to content

Commit 602b5ce

Browse files
himself65aduh95
authored andcommitted
fs: correct error message when FileHandle is transferred
PR-URL: #59156 Fixes: #59155 Reviewed-By: Juan José Arboleda <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: LiviaMedeiros <[email protected]>
1 parent ad4cf80 commit 602b5ce

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

lib/internal/fs/promises.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ const kHandle = Symbol('kHandle');
111111
const kFd = Symbol('kFd');
112112
const kRefs = Symbol('kRefs');
113113
const kClosePromise = Symbol('kClosePromise');
114+
const kCloseReason = Symbol('kCloseReason');
114115
const kCloseResolve = Symbol('kCloseResolve');
115116
const kCloseReject = Symbol('kCloseReject');
116117
const kRef = Symbol('kRef');
@@ -389,6 +390,7 @@ class FileHandle extends EventEmitter {
389390

390391
const handle = this[kHandle];
391392
this[kFd] = -1;
393+
this[kCloseReason] = 'The FileHandle has been transferred';
392394
this[kHandle] = null;
393395
this[kRefs] = 0;
394396

@@ -455,7 +457,7 @@ async function fsCall(fn, handle, ...args) {
455457

456458
if (handle.fd === -1) {
457459
// eslint-disable-next-line no-restricted-syntax
458-
const err = new Error('file closed');
460+
const err = new Error(handle[kCloseReason] ?? 'file closed');
459461
err.code = 'EBADF';
460462
err.syscall = fn.name;
461463
throw err;

test/parallel/test-worker-message-port-transfer-filehandle.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ const { once } = require('events');
6969
assert.strictEqual(fh.fd, -1);
7070

7171
port1.postMessage('second message');
72+
await assert.rejects(() => fh.read(), {
73+
code: 'EBADF',
74+
message: 'The FileHandle has been transferred',
75+
syscall: 'read'
76+
});
7277
})().then(common.mustCall());
7378

7479
(async function() {

0 commit comments

Comments
 (0)