in src/DotPulsar/Internal/DefaultExceptionHandler.cs [35:64]
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
};