<PackageReference Include="System.ClientModel" Version="1.2.1" />

CancellationHelper

static class CancellationHelper
using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; namespace System.ClientModel.Internal { [System.Runtime.CompilerServices.NullableContext(2)] [System.Runtime.CompilerServices.Nullable(0)] internal static class CancellationHelper { [System.Runtime.CompilerServices.Nullable(1)] private static readonly string s_cancellationMessage = new OperationCanceledException().Message; [System.Runtime.CompilerServices.NullableContext(1)] internal static bool ShouldWrapInOperationCanceledException(Exception exception, CancellationToken cancellationToken) { if (!(exception is OperationCanceledException)) return cancellationToken.IsCancellationRequested; return false; } [return: System.Runtime.CompilerServices.Nullable(1)] internal static Exception CreateOperationCanceledException(Exception innerException, CancellationToken cancellationToken, string message = null) { return new TaskCanceledException(message ?? s_cancellationMessage, innerException); } private static void ThrowOperationCanceledException(Exception innerException, CancellationToken cancellationToken) { throw CreateOperationCanceledException(innerException, cancellationToken, null); } internal static void ThrowIfCancellationRequested(CancellationToken cancellationToken, Exception innerException = null) { if (cancellationToken.IsCancellationRequested) ThrowOperationCanceledException(innerException, cancellationToken); } internal static void ThrowIfCancellationRequestedOrTimeout(CancellationToken messageToken, CancellationToken timeoutToken, Exception innerException, TimeSpan timeout) { ThrowIfCancellationRequested(messageToken, innerException); if (timeoutToken.IsCancellationRequested) throw CreateOperationCanceledException(innerException, timeoutToken, $"""{timeout:""}"""); } } }