Skip to content

Commit e2fb4ca

Browse files
himself65RafaelGSS
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 8c609be commit e2fb4ca

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
@@ -112,6 +112,7 @@ const kHandle = Symbol('kHandle');
112112
const kFd = Symbol('kFd');
113113
const kRefs = Symbol('kRefs');
114114
const kClosePromise = Symbol('kClosePromise');
115+
const kCloseReason = Symbol('kCloseReason');
115116
const kCloseResolve = Symbol('kCloseResolve');
116117
const kCloseReject = Symbol('kCloseReject');
117118
const kRef = Symbol('kRef');
@@ -390,6 +391,7 @@ class FileHandle extends EventEmitter {
390391

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

@@ -456,7 +458,7 @@ async function fsCall(fn, handle, ...args) {
456458

457459
if (handle.fd === -1) {
458460
// eslint-disable-next-line no-restricted-syntax
459-
const err = new Error('file closed');
461+
const err = new Error(handle[kCloseReason] ?? 'file closed');
460462
err.code = 'EBADF';
461463
err.syscall = fn.name;
462464
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)