Did you ever notice that sp_reset_connection is called A LOT from your application?
Did you ever see an "orphaned spid" with an open transaction that caused massive blocking?
Do you run jdbc or dblib data access technologies?
Have you ever had @@TRANCOUNT show an incorrect value?
Wouldn't it be nice to spin up a autonomous "auditing" transaction in the middle of your main transaction that will not be rolled back?
If you answered yes to any of these then you are ready to delve deeper into SQL Server transactions. You may be surprised that transaction handling doesn't always work the way you think it does.