Contributing a test case would allow to sort out if this is a NHibernate bug or not.
I personally suspect that some use of the session has been done prior to the scope suppression, causing it to acquire the connection. Since NHibernate v5, the connection is enlisted into the ambient transaction (if any) when acquired, even if its connection string auto-enlistment setting is disabled. (This can be disabled by switching the session option `AutoJoinTransaction` to false, by using the `WithOptions` method on the session factory for opening the session.)
A connection stay enlisted with a transaction until it ends, even if the connection is used inside a suppressed scope.
A session acquires its connection on the first operation requiring it, and by default releases it at the end of the transaction.
Note that Npgsql auto-enlistment behavior has also changed, being enabled by default around its 3.3 version, then re-disabled, then re-enabled in v4. See
here. It has also got many system transactions related changes.
It would be safer to change your pattern for opening the session inside the suppressed scope rather than outside of it. Otherwise you can `Disconnect` and immediately `Reconnect` the session to ensure it uses a new connection.