diff --git a/src/cmap/wire_protocol/compression.ts b/src/cmap/wire_protocol/compression.ts index b7d2980210..4ee941ff3c 100644 --- a/src/cmap/wire_protocol/compression.ts +++ b/src/cmap/wire_protocol/compression.ts @@ -1,4 +1,3 @@ -import { promisify } from 'util'; import * as zlib from 'zlib'; import { LEGACY_HELLO_COMMAND } from '../../constants'; @@ -43,8 +42,23 @@ export const uncompressibleCommands = new Set([ const ZSTD_COMPRESSION_LEVEL = 3; -const zlibInflate = promisify(zlib.inflate.bind(zlib)); -const zlibDeflate = promisify(zlib.deflate.bind(zlib)); +const zlibInflate = (buf: zlib.InputType) => { + return new Promise((resolve, reject) => { + zlib.inflate(buf, (error, result) => { + if (error) return reject(error); + resolve(result); + }); + }); +}; + +const zlibDeflate = (buf: zlib.InputType, options: zlib.ZlibOptions) => { + return new Promise((resolve, reject) => { + zlib.deflate(buf, options, (error, result) => { + if (error) return reject(error); + resolve(result); + }); + }); +}; let zstd: ZStandard; let Snappy: SnappyLib | null = null; diff --git a/src/mongo_logger.ts b/src/mongo_logger.ts index af72401709..fd869d6339 100644 --- a/src/mongo_logger.ts +++ b/src/mongo_logger.ts @@ -1,4 +1,4 @@ -import { inspect, promisify } from 'util'; +import { inspect } from 'util'; import { type Binary, @@ -240,11 +240,15 @@ export function createStdioLogger(stream: { write: NodeJS.WriteStream['write']; }): MongoDBLogWritable { return { - write: promisify((log: Log, cb: (error?: Error | null) => void): unknown => { - const logLine = inspect(log, { compact: true, breakLength: Infinity }); - stream.write(`${logLine}\n`, 'utf-8', cb); - return; - }) + write: (log: Log): Promise => { + return new Promise((resolve, reject) => { + const logLine = inspect(log, { compact: true, breakLength: Infinity }); + stream.write(`${logLine}\n`, 'utf-8', error => { + if (error) return reject(error); + resolve(true); + }); + }); + } }; } diff --git a/src/utils.ts b/src/utils.ts index e078f91d7c..49aa15ccea 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -4,7 +4,6 @@ import { type EventEmitter } from 'events'; import { promises as fs } from 'fs'; import * as http from 'http'; import { clearTimeout, setTimeout } from 'timers'; -import { promisify } from 'util'; import { deserialize, type Document, ObjectId, resolveBSONOptions } from './bson'; import type { Connection } from './cmap/connection'; @@ -1236,7 +1235,14 @@ export function squashError(_error: unknown) { return; } -export const randomBytes = promisify(crypto.randomBytes); +export const randomBytes = (size: number) => { + return new Promise((resolve, reject) => { + crypto.randomBytes(size, (error: Error | null, buf: Buffer) => { + if (error) return reject(error); + resolve(buf); + }); + }); +}; /** * Replicates the events.once helper.