internal void HandleTimeoutOrThreadAbort(Exception ex)
        {
            bool isFatal = false;

            if (isKillQueryConnection)
            {
                // Special connection started to cancel a query.
                // Abort will prevent recursive connection spawning
                Abort();
                if (ex is TimeoutException)
                {
                    Throw(new MyCatException(Resources.Timeout, true, ex));
                }
                else
                {
                    return;
                }
            }

            try
            {
                // Do a fast cancel.The reason behind small values for connection
                // and command timeout is that we do not want user to wait longer
                // after command has already expired.
                // Microsoft's SqlClient seems to be using 5 seconds timeouts
                // here as well.
                // Read the  error packet with "interrupted" message.
                CancelQuery(5);
                driver.ResetTimeout(5000);
                if (Reader != null)
                {
#if NETSTANDARD1_3
                    foreach (var x in Reader)
                    {
                        x.Dispose();
                    }
#else
                    foreach (var x in Reader)
                    {
                        x.Close();
                    }
#endif
                    Reader = null;
                }
            }
            catch (Exception ex2)
            {
                MyCatTrace.LogWarning(ServerThread, "Could not kill query, " +
                                      " aborting connection. Exception was " + ex2.Message);
                Abort();
                isFatal = true;
            }
            if (ex is TimeoutException)
            {
                Throw(new MyCatException(Resources.Timeout, isFatal, ex));
            }
        }
 internal void Abort()
 {
     try
     {
         driver.Close();
     }
     catch (Exception ex)
     {
         MyCatTrace.LogWarning(ServerThread, String.Concat("Error occurred aborting the connection. Exception was: ", ex.Message));
     }
     finally
     {
         this.isInUse = false;
     }
     SetState(ConnectionState.Closed, true);
 }