internal T Execute()

in Amazon.QLDB.Driver/driver/QldbDriver.cs [270:303]


        internal T Execute<T>(Func<TransactionExecutor, T> func, RetryPolicy retryPolicy, Action<int> retryAction)
        {
            this.driverBase.ThrowIfClosed();

            bool replaceDeadSession = false;
            for (int retryAttempt = 1; true; retryAttempt++)
            {
                QldbSession session = null;
                try
                {
                    if (replaceDeadSession)
                    {
                        session = this.StartNewSession();
                    }
                    else
                    {
                        session = this.GetSession();
                    }

                    T returnedValue = session.Execute(func);
                    this.driverBase.ReleaseSession(session);
                    return returnedValue;
                }
                catch (QldbTransactionException qte)
                {
                    replaceDeadSession = this.driverBase.GetShouldReplaceDeadSessionOrThrowIfNoRetry(
                        qte,
                        session,
                        retryAttempt,
                        retryPolicy,
                        retryAction);
                }
            }
        }