internal class CompletableOutgoingMessage()

in src/Azure.AppService.Tunnel/Tunnel/WebSockets/Outgoing/CompletableOutgoingMessage.cs [6:24]


internal class CompletableOutgoingMessage(IOutgoingMessage innerRequest) : IOutgoingMessage
{
    public TaskCompletionSource<Unit> TaskCompletionSource { get; } =
        new(TaskCreationOptions.RunContinuationsAsynchronously);

    public bool SilentFailure => innerRequest.SilentFailure;

    public async Task Execute()
    {
        try
        {
            await innerRequest.Execute();
        }
        finally
        {
            TaskCompletionSource.SetResult(Unit.Instance);
        }
    }
}