diff --git a/lib/internal/crypto/random.js b/lib/internal/crypto/random.js index 257b00a9ce0519..f42458aa788985 100644 --- a/lib/internal/crypto/random.js +++ b/lib/internal/crypto/random.js @@ -51,7 +51,7 @@ function randomBytes(size, cb) { const buf = Buffer.alloc(size); - if (!cb) return handleError(buf, 0, size); + if (!cb) return handleError(_randomBytes(buf, 0, size), buf); const wrap = new AsyncWrap(Providers.RANDOMBYTESREQUEST); wrap.ondone = (ex) => { // Retains buf while request is in flight. @@ -77,7 +77,7 @@ function randomFillSync(buf, offset = 0, size) { size = assertSize(size, elementSize, offset, buf.byteLength); } - return handleError(buf, offset, size); + return handleError(_randomBytes(buf, offset, size), buf); } function randomFill(buf, offset, size, cb) { @@ -115,8 +115,7 @@ function randomFill(buf, offset, size, cb) { _randomBytes(buf, offset, size, wrap); } -function handleError(buf, offset, size) { - const ex = _randomBytes(buf, offset, size); +function handleError(ex, buf) { if (ex) throw ex; return buf; }