System.Data.SqlClient.SqlInternalConnectionTds currently goes like this:
try
{
OpenLoginEnlist(timeout, connectionOptions, redirectedUserInstance);
break;
}
catch (SqlException sqlex)
{
if (something)
{
throw sqlex;
}
throw sqlex causes original call stack of where the exception was thrown to be lost. If that's what it desired then it should be explained, otherwise just use throw;