diff --git a/projects/RabbitMQ.Client/Impl/ChannelBase.cs b/projects/RabbitMQ.Client/Impl/ChannelBase.cs index 8c4c132f8..b7ed8e6ce 100644 --- a/projects/RabbitMQ.Client/Impl/ChannelBase.cs +++ b/projects/RabbitMQ.Client/Impl/ChannelBase.cs @@ -1841,6 +1841,11 @@ await _confirmSemaphore.WaitAsync(cancellationToken) } else { + /* + * Note: + * In the case of `basic.return`, the TCS will have been handled and removed by HandleBasicReturn() + * RabbitMQ still sends `basic.ack`, so the TCS will not be in the dict, hence, TryGetValue here + */ if (_confirmsTaskCompletionSources.TryGetValue(deliveryTag, out TaskCompletionSource? tcs)) { tcs.SetResult(isAck);