private static void StartCommandCallback(object state)
        {
            SqlCommandAsyncResult result = (SqlCommandAsyncResult)state;

            try
            {
                result.StartCommandInternal(false);
            }
            catch (Exception exception)
            {
                if (Fx.IsFatal(exception))
                {
                    throw;
                }
                if (result.sqlCommand.Connection != null)
                {
                    result.sqlCommand.Connection.Close();
                }
                result.Complete(false, exception);
            }
        }
        static void StartCommandCallback(object state)
        {
            SqlCommandAsyncResult thisPtr = (SqlCommandAsyncResult)state;

            try
            {
                // this can throw on the [....] path - we need to signal the callback
                thisPtr.StartCommandInternal(false);
            }
            catch (Exception e)
            {
                if (Fx.IsFatal(e))
                {
                    throw;
                }

                if (thisPtr.sqlCommand.Connection != null)
                {
                    thisPtr.sqlCommand.Connection.Close();
                }

                thisPtr.Complete(false, e);
            }
        }