diff --git a/dist/src/binders/bindPool.js b/dist/src/binders/bindPool.js
index ad509058bf5d26c82d4b2aea35e945df2f83f38e..1ca27403f70362f9a60abef7df6c2fdaaba1805b 100644
--- a/dist/src/binders/bindPool.js
+++ b/dist/src/binders/bindPool.js
@@ -7,6 +7,7 @@ const factories_1 = require("../factories");
 const state_1 = require("../state");
 const bindPool = (parentLog, pool, clientConfiguration) => {
     return {
+        pool,
         any: (query) => {
             return (0, factories_1.createConnection)(parentLog, pool, clientConfiguration, 'IMPLICIT_QUERY', (connectionLog, connection, boundConnection) => {
                 return boundConnection.any(query);
diff --git a/dist/src/factories/createPool.js b/dist/src/factories/createPool.js
index b91a9fe433dc340f5cdf096ca4c568297c343ab3..401df1272d1c7f344bb956b38cc7dbde29231742 100644
--- a/dist/src/factories/createPool.js
+++ b/dist/src/factories/createPool.js
@@ -44,6 +44,16 @@ const createPool = async (connectionUri, clientConfigurationInput) => {
             getTypeParser,
         },
     });
+
+    // https://github.com/gajus/slonik/issues/471
+    // https://github.com/brianc/node-postgres/issues/2764#issuecomment-1163475426
+    // Slonik did not have a way to handle errors emitted by the pool, which resulted in an uncaught exception, which would crash the process.
+    pool.on('error', (error) => {
+        poolLog.error({
+            error: (0, serialize_error_1.serializeError)(error),
+        }, 'client error');
+    });
+
     state_1.poolStateMap.set(pool, {
         ended: false,
         mock: false,
diff --git a/dist/src/types.d.ts b/dist/src/types.d.ts
index d091b301b1df0f8d9ad9298d587081fe6d33c0be..57ea5a46fbf0878546e34debed2401efcb66d7fb 100644
--- a/dist/src/types.d.ts
+++ b/dist/src/types.d.ts
@@ -138,6 +138,7 @@ export declare type DatabasePool = CommonQueryMethods & {
     readonly end: () => Promise<void>;
     readonly getPoolState: () => PoolState;
     readonly stream: StreamFunction;
+    readonly pool: PgPool;
 };
 export declare type DatabaseConnection = DatabasePool | DatabasePoolConnection;
 export declare type QueryResultRowColumn = PrimitiveValueExpression;
diff --git a/src/binders/bindPool.ts b/src/binders/bindPool.ts
index d10bb50117b613f262ee715fc40745e8270a60b3..fde977dd042ec2561163f252c7f76f92cb043eb0 100644
--- a/src/binders/bindPool.ts
+++ b/src/binders/bindPool.ts
@@ -26,6 +26,7 @@ export const bindPool = (
   clientConfiguration: ClientConfiguration,
 ): DatabasePool => {
   return {
+    pool,
     any: (query: TaggedTemplateLiteralInvocation) => {
       return createConnection(
         parentLog,
diff --git a/src/types.ts b/src/types.ts
index da293a0a4ce2583c43711cbe90d4829ec9c46fa8..962acdd5c2652e6e61147adc03204bca065cd28c 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -191,6 +191,7 @@ export type DatabasePool = CommonQueryMethods & {
   readonly end: () => Promise<void>,
   readonly getPoolState: () => PoolState,
   readonly stream: StreamFunction,
+  readonly pool: PgPool,
 };
 
 export type DatabaseConnection = DatabasePool | DatabasePoolConnection;
