in src/DotPulsar/Internal/SubProducer.cs [208:236]
public async Task EstablishNewChannel(CancellationToken cancellationToken)
{
try
{
if (_dispatcherCts is not null && !_dispatcherCts.IsCancellationRequested)
{
_dispatcherCts.Cancel();
_dispatcherCts.Dispose();
}
}
catch (Exception)
{
// Ignored
}
await _executor.TryExecuteOnce(() => _dispatcherTask ?? Task.CompletedTask, cancellationToken).ConfigureAwait(false);
try
{
var oldChannel = _channel;
await oldChannel.DisposeAsync().ConfigureAwait(false);
}
catch (Exception)
{
// Ignored
}
_channel = await _executor.Execute(() => _factory.Create(_topicEpoch, cancellationToken), cancellationToken).ConfigureAwait(false);
}