diff --git a/deno/types/index.d.ts b/deno/types/index.d.ts
index 2088662d..84e923c6 100644
--- a/deno/types/index.d.ts
+++ b/deno/types/index.d.ts
@@ -1,5 +1,6 @@
 import { Buffer } from 'https://deno.land/std@0.132.0/node/buffer.ts'
 import process from 'https://deno.land/std@0.132.0/node/process.ts'
+import { Socket } from "https://deno.land/std@0.132.0/node/net.ts"
 import { Readable, Writable } from 'https://deno.land/std@0.132.0/node/stream.ts'
 
 /**
@@ -124,6 +125,8 @@ interface BaseOptions<T extends Record<string, postgres.PostgresType>> {
   backoff: boolean | ((attemptNum: number) => number);
   max_lifetime: number | null;
   keep_alive: number | null;
+  /** fn returning custom socket to use */
+  socket: (options: postgres.ParsedOptions<T>) => Socket | Promise<Socket>
 }
 
 
diff --git a/transpile.deno.js b/transpile.deno.js
index f077677b..c1be44e5 100644
--- a/transpile.deno.js
+++ b/transpile.deno.js
@@ -84,6 +84,7 @@ function transpile(x, name, folder) {
       '(query.writable.push({ chunk }), callback())'
     )
     .replace('socket.setKeepAlive(true, 1000 * keep_alive)', 'socket.setKeepAlive(true)')
+    .replace('node:net', std + 'node/net.ts')
     .replace('node:stream', std + 'node/stream.ts')
     .replace('import net from \'net\'', 'import { net } from \'../polyfills.js\'')
     .replace('import tls from \'tls\'', 'import { tls } from \'../polyfills.js\'')
diff --git a/types/index.d.ts b/types/index.d.ts
index 8989ff47..8e61d9b8 100644
--- a/types/index.d.ts
+++ b/types/index.d.ts
@@ -1,3 +1,4 @@
+import { Socket } from "node:net"
 import { Readable, Writable } from 'node:stream'
 
 /**
@@ -122,6 +123,8 @@ interface BaseOptions<T extends Record<string, postgres.PostgresType>> {
   backoff: boolean | ((attemptNum: number) => number);
   max_lifetime: number | null;
   keep_alive: number | null;
+  /** fn returning custom socket to use */
+  socket: (options: postgres.ParsedOptions<T>) => Socket | Promise<Socket>
 }