private static FaultAction DetermineFaultAction()

in src/DotPulsar/Internal/DefaultExceptionHandler.cs [39:68]


    private static FaultAction DetermineFaultAction(Exception exception, CancellationToken cancellationToken)
        => exception switch
        {
            TooManyRequestsException _ => FaultAction.Retry,
            ChannelNotReadyException _ => FaultAction.Retry,
            ServiceNotReadyException _ => FaultAction.Retry,
            MetadataException _ => FaultAction.Rethrow,
            ConsumerNotFoundException _ => FaultAction.Retry,
            ConsumerBusyException _ => FaultAction.Retry,
            ProducerBusyException _ => FaultAction.Retry,
            ProducerFencedException _ => FaultAction.Rethrow,
            ConnectionDisposedException _ => FaultAction.Retry,
            AsyncLockDisposedException _ => FaultAction.Retry,
            PulsarStreamDisposedException _ => FaultAction.Retry,
            AsyncQueueDisposedException _ => FaultAction.Retry,
            AsyncQueueWithCursorDisposedException => FaultAction.Retry,
            AsyncQueueWithCursorNoItemException => FaultAction.Rethrow,
            ProducerSendReceiptOrderingException _ => FaultAction.Retry,
            OperationCanceledException _ => cancellationToken.IsCancellationRequested ? FaultAction.Rethrow : FaultAction.Retry,
            DotPulsarException _ => FaultAction.Rethrow,
            IOException _ => FaultAction.Retry,
            SocketException socketException => socketException.SocketErrorCode switch
            {
                SocketError.HostNotFound => FaultAction.Rethrow,
                SocketError.HostUnreachable => FaultAction.Rethrow,
                SocketError.NetworkUnreachable => FaultAction.Rethrow,
                _ => FaultAction.Retry
            },
            _ => FaultAction.Rethrow
        };