public async Task CloseInternal()

in src/NMS.AMQP/NmsContext.cs [380:413]


        public async Task CloseInternal(bool sync)
        {
            NMSException failure = null;

            try
            {
                if (sync)
                    session?.Close();
                else
                    await (session?.CloseAsync() ?? Task.CompletedTask).Await();
            } catch (NMSException jmse)
            {
                failure = jmse;
            }

            if (connectionRefCount.DecrementAndGet() == 0) {
                try
                {
                    if (sync)
                        connection.Close();
                    else
                        await connection.CloseAsync().Await();
                } catch (NMSException jmse) {
                    if (failure == null)
                    {
                        failure = jmse;
                    }
                }
            }

            if (failure != null) {
                throw failure;
            }
        }