in src/DotPulsar/Internal/Producer.cs [256:280]
public async ValueTask<MessageId> Send(MessageMetadata metadata, TMessage message, CancellationToken cancellationToken)
{
var tcs = new TaskCompletionSource<MessageId>();
var registration = cancellationToken.Register(() => tcs.TrySetCanceled(cancellationToken));
ValueTask OnMessageSent(MessageId messageId)
{
tcs.TrySetResult(messageId);
#if NET6_0_OR_GREATER
return ValueTask.CompletedTask;
#else
return new ValueTask();
#endif
}
try
{
await InternalSend(metadata, message, true, OnMessageSent, x => tcs.TrySetException(x), cancellationToken).ConfigureAwait(false);
return await tcs.Task.ConfigureAwait(false);
}
finally
{
registration.Dispose();
}
}