-
Notifications
You must be signed in to change notification settings - Fork 5
V9.0.6/awaiter #123
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
V9.0.6/awaiter #123
Conversation
|
Caution Review failedThe pull request is closed. ## Walkthrough
The changes introduce a new asynchronous utility class `Awaiter` with a method to retry an async operation until success or timeout, along with a new configuration class `AsyncRunOptions`. The `AsyncOptions` constructor was updated to initialize its cancellation token. Comprehensive tests for the retry logic were also added.
## Changes
| File(s) | Change Summary |
|-------------------------------------------------|---------------------------------------------------------------------------------------------------|
| src/Cuemon.Core/Threading/AsyncOptions.cs | Modified `AsyncOptions` constructor to initialize `CancellationToken` with `CancellationToken.None`. |
| src/Cuemon.Core/Threading/AsyncRunOptions.cs | Added new class `AsyncRunOptions` with `Timeout` and `Delay` properties and default values. |
| src/Cuemon.Core/Threading/Awaiter.cs | Added static class `Awaiter` with async retry method `RunUntilSuccessfulOrTimeoutAsync`. |
| test/Cuemon.Core.Tests/Threading/AwaiterTest.cs | Added `AwaiterTest` class with multiple async tests covering success, retry, timeout, and exceptions.|
## Error: Could not generate a valid Mermaid diagram after multiple attempts.
> > Hop and skip, the async way,
> > Retry till success or timeout's sway.
> > Tokens set, delays in line,
> > Exceptions caught, all combined fine.
> > Rabbit runs the async race,
> > With code that hops with grace! 🐇✨📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (3)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 6
🧹 Nitpick comments (2)
src/Cuemon.Core/Threading/AsyncOptions.cs (1)
26-28: XML doc is now misleading – default is no longerdefaultThe constructor sets the token to
CancellationToken.None, but the documentation table still advertises<c>default</c>.
Please keep docs in sync with behaviour to avoid confusion.-/// <description><c>default</c></description> +/// <description><c>CancellationToken.None</c></description>test/Cuemon.Core.Tests/Threading/AwaiterTest.cs (1)
80-81: Extraneous semicolonThe lonely semicolon has no effect and can be safely removed.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
src/Cuemon.Core/Threading/AsyncOptions.cs(1 hunks)src/Cuemon.Core/Threading/AsyncRunOptions.cs(1 hunks)src/Cuemon.Core/Threading/Awaiter.cs(1 hunks)test/Cuemon.Core.Tests/Threading/AwaiterTest.cs(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
src/Cuemon.Core/Threading/AsyncRunOptions.cs (1)
src/Cuemon.Core/Threading/AsyncOptions.cs (2)
AsyncOptions(11-57)AsyncOptions(35-38)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: call-build (Release) / 🛠️ Build
- GitHub Check: call-build (Debug) / 🛠️ Build
- GitHub Check: 🪟 Prepare Windows / 🏷️ Restore
| public AsyncRunOptions() | ||
| { | ||
| Timeout = TimeSpan.FromSeconds(5); | ||
| Delay = TimeSpan.FromMilliseconds(100); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Validate Timeout and Delay at construction time
A negative Timeout/Delay (or a Delay greater than Timeout) will make Awaiter behave unpredictably or throw deep inside Task.Delay.
Sanitise once in the ctor to fail-fast.
- public AsyncRunOptions()
- {
- Timeout = TimeSpan.FromSeconds(5);
- Delay = TimeSpan.FromMilliseconds(100);
- }
+ public AsyncRunOptions()
+ {
+ Timeout = TimeSpan.FromSeconds(5);
+ Delay = TimeSpan.FromMilliseconds(100);
+ }
+
+ private void Validate()
+ {
+ if (Timeout < TimeSpan.Zero) throw new ArgumentOutOfRangeException(nameof(Timeout));
+ if (Delay < TimeSpan.Zero) throw new ArgumentOutOfRangeException(nameof(Delay));
+ if (Delay > Timeout) throw new ArgumentException("Delay cannot exceed Timeout.");
+ }Call Validate() at the end of the ctor and from both property setters (see next comment).
Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In src/Cuemon.Core/Threading/AsyncRunOptions.cs around lines 31 to 35, the
constructor sets Timeout and Delay without validation, allowing negative values
or Delay greater than Timeout, which causes unpredictable behavior. Add a
Validate() method that checks Timeout and Delay for non-negative values and
ensures Delay is not greater than Timeout. Call Validate() at the end of the
constructor to fail fast if invalid values are set.
| public TimeSpan Timeout { get; set; } | ||
|
|
||
| /// <summary> | ||
| /// Gets or sets the delay between asynchronous operation attempts. | ||
| /// </summary> | ||
| /// <value>The delay between asynchronous operation attempts. The default is 100 milliseconds.</value> | ||
| public TimeSpan Delay { get; set; } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Add guards in property setters
Without checks, a caller can later inject invalid values after construction.
-public TimeSpan Timeout { get; set; }
+private TimeSpan _timeout;
+public TimeSpan Timeout
+{
+ get => _timeout;
+ set
+ {
+ if (value < TimeSpan.Zero) throw new ArgumentOutOfRangeException(nameof(value));
+ _timeout = value;
+ }
+}
@@
-public TimeSpan Delay { get; set; }
+private TimeSpan _delay;
+public TimeSpan Delay
+{
+ get => _delay;
+ set
+ {
+ if (value < TimeSpan.Zero) throw new ArgumentOutOfRangeException(nameof(value));
+ _delay = value;
+ }
+}📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| public TimeSpan Timeout { get; set; } | |
| /// <summary> | |
| /// Gets or sets the delay between asynchronous operation attempts. | |
| /// </summary> | |
| /// <value>The delay between asynchronous operation attempts. The default is 100 milliseconds.</value> | |
| public TimeSpan Delay { get; set; } | |
| private TimeSpan _timeout; | |
| public TimeSpan Timeout | |
| { | |
| get => _timeout; | |
| set | |
| { | |
| if (value < TimeSpan.Zero) throw new ArgumentOutOfRangeException(nameof(value)); | |
| _timeout = value; | |
| } | |
| } | |
| /// <summary> | |
| /// Gets or sets the delay between asynchronous operation attempts. | |
| /// </summary> | |
| /// <value>The delay between asynchronous operation attempts. The default is 100 milliseconds.</value> | |
| private TimeSpan _delay; | |
| public TimeSpan Delay | |
| { | |
| get => _delay; | |
| set | |
| { | |
| if (value < TimeSpan.Zero) throw new ArgumentOutOfRangeException(nameof(value)); | |
| _delay = value; | |
| } | |
| } |
🤖 Prompt for AI Agents
In src/Cuemon.Core/Threading/AsyncRunOptions.cs between lines 41 and 47, the
Timeout and Delay property setters lack validation, allowing invalid values to
be set. Add guard clauses in the setters to validate the input, for example
ensuring the TimeSpan values are not negative or zero where inappropriate, and
throw appropriate exceptions if invalid values are assigned.
| options.CancellationToken.ThrowIfCancellationRequested(); | ||
| conditionalValue = await method().ConfigureAwait(false); | ||
| if (conditionalValue.Succeeded) { break; } | ||
| } | ||
| catch (Exception ex) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Possible NullReferenceException when delegate returns null
conditionalValue.Succeeded is accessed inside the loop without a null-check, yet the delegate contract allows returning null.
Either document that method must never return null or defensively handle it:
-conditionalValue = await method().ConfigureAwait(false);
-if (conditionalValue.Succeeded) { break; }
+conditionalValue = await method().ConfigureAwait(false);
+if (conditionalValue?.Succeeded == true) { break; }📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| options.CancellationToken.ThrowIfCancellationRequested(); | |
| conditionalValue = await method().ConfigureAwait(false); | |
| if (conditionalValue.Succeeded) { break; } | |
| } | |
| catch (Exception ex) | |
| options.CancellationToken.ThrowIfCancellationRequested(); | |
| conditionalValue = await method().ConfigureAwait(false); | |
| if (conditionalValue?.Succeeded == true) { break; } | |
| } | |
| catch (Exception ex) |
🤖 Prompt for AI Agents
In src/Cuemon.Core/Threading/Awaiter.cs around lines 40 to 44, the code accesses
conditionalValue.Succeeded without checking if conditionalValue is null, which
can cause a NullReferenceException since the delegate method may return null. To
fix this, add a null check for conditionalValue before accessing its Succeeded
property, or update the method's contract to ensure it never returns null and
document this requirement clearly.
| exceptions.Add(ex); | ||
| } | ||
|
|
||
| await Task.Delay(options.Delay).ConfigureAwait(false); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Propagate cancellation to the delay
Task.Delay(options.Delay) ignores the provided cancellation token, postponing cancellation until the next loop turn.
-await Task.Delay(options.Delay).ConfigureAwait(false);
+await Task.Delay(options.Delay, options.CancellationToken).ConfigureAwait(false);This ensures that a cancelled token breaks out immediately.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| await Task.Delay(options.Delay).ConfigureAwait(false); | |
| await Task.Delay(options.Delay, options.CancellationToken).ConfigureAwait(false); |
🤖 Prompt for AI Agents
In src/Cuemon.Core/Threading/Awaiter.cs at line 49, the call to Task.Delay does
not pass the cancellation token from options, causing delays to ignore
cancellation requests. Modify the Task.Delay call to include the cancellation
token from options so that the delay can be cancelled immediately when
requested, allowing the loop to break out promptly.
src/Cuemon.Core/Threading/Awaiter.cs
Outdated
| public static async Task<ConditionalValue> RunUntilSucceededOrTimeoutAsync(Func<Task<ConditionalValue>> method, Action<AsyncRunOptions> setup = null) | ||
| { | ||
| var options = Patterns.Configure(setup); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Guard against null method delegate
Awaiter.RunUntilSucceededOrTimeoutAsync(null) currently throws a null-deref several lines later.
Add quick validation for clearer exception semantics.
-public static async Task<ConditionalValue> RunUntilSucceededOrTimeoutAsync(Func<Task<ConditionalValue>> method, Action<AsyncRunOptions> setup = null)
+public static async Task<ConditionalValue> RunUntilSucceededOrTimeoutAsync(Func<Task<ConditionalValue>> method, Action<AsyncRunOptions> setup = null)
{
+ if (method == null) throw new ArgumentNullException(nameof(method));🤖 Prompt for AI Agents
In src/Cuemon.Core/Threading/Awaiter.cs around lines 29 to 31, the method
parameter is not checked for null, causing a null reference exception later. Add
a guard clause at the start of RunUntilSucceededOrTimeoutAsync to throw an
ArgumentNullException if method is null, providing clearer and earlier error
feedback.
| { | ||
| new InvalidOperationException("fail1"), | ||
| new ArgumentException("fail2") | ||
| }; | ||
| var callCount = 0; | ||
| Task<ConditionalValue> Method() | ||
| { | ||
| throw exceptions[callCount++]; | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
❓ Verification inconclusive
exceptions[callCount++] can overrun the list
When the timeout allows more than two iterations, an IndexOutOfRangeException will be added, defeating the intent of verifying an AggregateException with exactly the two predefined failures.
Consider looping the provided exceptions instead:
-Task<ConditionalValue> Method()
-{
- throw exceptions[callCount++];
-}
+Task<ConditionalValue> Method()
+{
+ var ex = exceptions[callCount % exceptions.Count];
+ callCount++;
+ throw ex;
+}This keeps the test deterministic irrespective of how many retries occur.
#!/bin/bash
# Locate the AwaiterTest.cs file and inspect the exceptions declaration and Method()
file=$(fd --glob 'AwaiterTest.cs' -t f)
echo "Found file: $file"
echo "---- Head of file ----"
sed -n '1,200p' "$file"
echo "---- Search for exceptions declaration ----"
grep -Rn "exceptions *=" "$file"
echo "---- Search for Method() definition ----"
grep -Rn "Task<ConditionalValue> Method" -n "$file"Cycle through exceptions in Method() to prevent overruns
When retries exceed the two predefined failures, exceptions[callCount++] will throw an IndexOutOfRangeException. Use the modulo operator on the array’s Length to keep calls within bounds:
- File: test/Cuemon.Core.Tests/Threading/AwaiterTest.cs (lines 100–108)
-Task<ConditionalValue> Method()
-{
- throw exceptions[callCount++];
-}
+Task<ConditionalValue> Method()
+{
+ var ex = exceptions[callCount % exceptions.Length];
+ callCount++;
+ throw ex;
+}📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| { | |
| new InvalidOperationException("fail1"), | |
| new ArgumentException("fail2") | |
| }; | |
| var callCount = 0; | |
| Task<ConditionalValue> Method() | |
| { | |
| throw exceptions[callCount++]; | |
| } | |
| Task<ConditionalValue> Method() | |
| { | |
| var ex = exceptions[callCount % exceptions.Length]; | |
| callCount++; | |
| throw ex; | |
| } |
🤖 Prompt for AI Agents
In test/Cuemon.Core.Tests/Threading/AwaiterTest.cs around lines 100 to 108, the
code accessing exceptions[callCount++] can cause an IndexOutOfRangeException if
retries exceed the exceptions array length. To fix this, modify the index access
to use callCount modulo the length of the exceptions array, ensuring the index
wraps around and prevents overruns during repeated calls.
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #123 +/- ##
==========================================
- Coverage 80.17% 79.86% -0.32%
==========================================
Files 596 595 -1
Lines 18513 18317 -196
Branches 1902 1870 -32
==========================================
- Hits 14843 14629 -214
- Misses 3599 3618 +19
+ Partials 71 70 -1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
♻️ Duplicate comments (13)
.nuget/Cuemon.Extensions.Data.Integrity/PackageReleaseNotes.txt (1)
5-5: Duplicate: Simplify wording in ALM bullet. See suggestion on first release-notes file for replacing “with respect to” with “for” and adding “the” before “dependencies.”🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.AspNetCore.Text.Json/PackageReleaseNotes.txt (1)
5-5: Duplicate: Simplify wording in ALM bullet. See initial note about using “for TFMs” instead of “with respect to TFMs” and prepending “the” to “dependencies.”🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.IO/PackageReleaseNotes.txt (1)
5-5: Duplicate: Simplify wording in ALM bullet. Refer to the first file’s suggestion on adopting “for TFMs” and adding “the” before “dependencies.”🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.AspNetCore/PackageReleaseNotes.txt (1)
5-5: Duplicate: Simplify wording in ALM bullet. As noted above, “for TFMs” is more concise than “with respect to TFMs,” and including “the” before “dependencies” enhances readability.🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Threading/PackageReleaseNotes.txt (1)
5-5: Apply the same phrasing refinement.
See comment on.nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt:5for suggested wording.🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Diagnostics/PackageReleaseNotes.txt (1)
5-5: Apply the same phrasing refinement.
See comment on.nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt:5for suggested wording.🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Reflection/PackageReleaseNotes.txt (1)
5-5: Apply the same phrasing refinement.
See comment on.nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt:5for suggested wording.🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Threading/PackageReleaseNotes.txt (1)
5-5: Apply the same phrasing refinement.
See comment on.nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt:5for suggested wording.🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.DependencyInjection/PackageReleaseNotes.txt (1)
1-5: Ensure consistent wording across release notes
The 9.0.6 entry mirrors other packages. You may apply the same phrasing refinement:- Updated dependencies to the latest TFMs🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Runtime.Caching/PackageReleaseNotes.txt (1)
1-5: Consistent phrasing suggestion
As with other release notes, consider replacing- CHANGED Dependencies to latest and greatest with respect to TFMswith
- Updated dependencies to the latest TFMs🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.AspNetCore/PackageReleaseNotes.txt (1)
1-5: Apply uniform release note language
To align with the rest of the suite, you can simplify the dependency update line to:- Updated dependencies to the latest TFMs🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Diagnostics/PackageReleaseNotes.txt (1)
1-5: Standardize dependency update phrasing
For consistency, update the bullet to:- Updated dependencies to the latest TFMs🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
test/Cuemon.Core.Tests/Threading/AwaiterTest.cs (1)
105-108:exceptions[callCount++]still risksIndexOutOfRangeExceptionThe earlier review pointed out that this direct indexing will break when the retry loop exceeds the two predefined failures – a likely scenario given a 50 ms timeout and 10 ms delay. Please wrap the index with a modulo to keep the test deterministic.
- Task<ConditionalValue> Method() - { - throw exceptions[callCount++]; - } + Task<ConditionalValue> Method() + { + var ex = exceptions[callCount % exceptions.Count]; + callCount++; + throw ex; + }
🧹 Nitpick comments (35)
.nuget/Cuemon.Extensions.Core/PackageReleaseNotes.txt (2)
1-2: Remove hidden BOM and verify header formatting.
The file begins with a visible BOM character (\uFEFF) which can cause rendering issues in some editors. Remove the BOM to ensure clean text; the “Version 9.0.6” header and availability line otherwise match the established pattern.
4-5: Refine phrasing in ALM section.
The entry “CHANGED Dependencies to latest and greatest with respect to TFMs” is consistent but a bit wordy. Consider replacing “with respect to TFMs” with “for TFMs” to improve conciseness and align with a more streamlined style.🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.AspNetCore.Mvc.RazorPages/PackageReleaseNotes.txt (1)
5-5: Consider shortening wording for brevity.
Replace “with respect to TFMs” with “for TFMs” to reduce wordiness.- - CHANGED Dependencies to latest and greatest with respect to TFMs + - CHANGED Dependencies to latest and greatest for TFMs🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Text.Json/PackageReleaseNotes.txt (1)
5-5: Consider shortening wording for brevity.
Replace “with respect to TFMs” with “for TFMs” to reduce wordiness.- - CHANGED Dependencies to latest and greatest with respect to TFMs + - CHANGED Dependencies to latest and greatest for TFMs🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.AspNetCore.Razor.TagHelpers/PackageReleaseNotes.txt (1)
5-5: Consider shortening wording for brevity.
Replace “with respect to TFMs” with “for TFMs” to reduce wordiness.- - CHANGED Dependencies to latest and greatest with respect to TFMs + - CHANGED Dependencies to latest and greatest for TFMs🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.AspNetCore.Authentication/PackageReleaseNotes.txt (1)
5-5: Consider shortening wording for brevity.
Replace “with respect to TFMs” with “for TFMs” to reduce wordiness.- - CHANGED Dependencies to latest and greatest with respect to TFMs + - CHANGED Dependencies to latest and greatest for TFMs🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Text/PackageReleaseNotes.txt (1)
5-5: Consider shortening wording for brevity.
Replace “with respect to TFMs” with “for TFMs” to reduce wordiness.- - CHANGED Dependencies to latest and greatest with respect to TFMs + - CHANGED Dependencies to latest and greatest for TFMs🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.AspNetCore.Authentication/PackageReleaseNotes.txt (1)
4-5: Refine release note wording.
The phrase “CHANGED Dependencies to latest and greatest with respect to TFMs” is verbose and missing an article. Consider simplifying to:
- “Updated dependencies to the latest TFMs.”
🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Hosting/PackageReleaseNotes.txt (2)
4-5: Simplify dependency update wording.
Replace “CHANGED Dependencies to latest and greatest with respect to TFMs” with a more concise “Updated dependencies to the latest TFMs.”🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
36-36: Clarify removal scope.
Add the definite article and specify the target clearly, e.g.:
- “Removed support for the IHostingEnvironment interface (netstandard2.0).”
.nuget/Cuemon.Extensions.Xml/PackageReleaseNotes.txt (1)
4-5: Shorten ALM entry and add article.
Consider changing “CHANGED Dependencies to latest and greatest with respect to TFMs” to:
- “Updated dependencies to the latest TFMs.”
🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.AspNetCore.Xml/PackageReleaseNotes.txt (1)
4-5: Make ALM change more concise.
Use “Updated dependencies to the latest TFMs.” instead of the longer phrasing.🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.AspNetCore.App/PackageReleaseNotes.txt (1)
4-5: Refine ALM change description.
Consider “Updated dependencies to the latest TFMs.” for brevity and clarity.🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Data/PackageReleaseNotes.txt (1)
1-5: Suggest simplifying the ALM entry wording.The phrase “CHANGED Dependencies to latest and greatest with respect to TFMs” is verbose and could be more concise. For example:
# ALM - - CHANGED Dependencies to latest and greatest with respect to TFMs + - UPDATED dependencies for target framework monikers🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Net/PackageReleaseNotes.txt (1)
1-5: Suggest simplifying the ALM entry wording.The phrase “CHANGED Dependencies to latest and greatest with respect to TFMs” is verbose and could be more concise. For example:
# ALM - - CHANGED Dependencies to latest and greatest with respect to TFMs + - UPDATED dependencies for target framework monikers🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.AspNetCore.Mvc/PackageReleaseNotes.txt (1)
1-5: Suggest simplifying the ALM entry wording.The phrase “CHANGED Dependencies to latest and greatest with respect to TFMs” is verbose and could be more concise. For example:
# ALM - - CHANGED Dependencies to latest and greatest with respect to TFMs + - UPDATED dependencies for target framework monikers🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Xml/PackageReleaseNotes.txt (1)
1-5: Suggest simplifying the ALM entry wording.The phrase “CHANGED Dependencies to latest and greatest with respect to TFMs” is verbose and could be more concise. For example:
# ALM - - CHANGED Dependencies to latest and greatest with respect to TFMs + - UPDATED dependencies for target framework monikers🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Net/PackageReleaseNotes.txt (1)
1-5: Suggest simplifying the ALM entry wording.The phrase “CHANGED Dependencies to latest and greatest with respect to TFMs” is verbose and could be more concise. For example:
# ALM - - CHANGED Dependencies to latest and greatest with respect to TFMs + - UPDATED dependencies for target framework monikers🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Data.SqlClient/PackageReleaseNotes.txt (1)
5-5: Refine ALM bullet for clarity.
Consider shortening “CHANGED Dependencies to latest and greatest with respect to TFMs” to something like “Updated dependencies for TFMs” or include the missing article for consistency (e.g., “to the latest…”).🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Data/PackageReleaseNotes.txt (1)
5-5: Refine ALM bullet wording.
Consider rephrasing to “Updated dependencies for TFMs” or include “the” for consistency: “to the latest dependencies for TFMs.”🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Text.Json/PackageReleaseNotes.txt (1)
5-5: Simplify ALM bullet text.
Replace “CHANGED Dependencies to latest and greatest with respect to TFMs” with a more concise phrase like “Updated dependencies for TFMs.”🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Security.Cryptography/PackageReleaseNotes.txt (1)
5-5: ALM bullet could be clearer.
Consider a concise phrasing: “Updated dependencies for TFMs” or include “the latest” if desired: “to the latest dependencies for TFMs.”🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Data.Integrity/PackageReleaseNotes.txt (1)
5-5: Streamline ALM bullet.
Shorten to “Updated dependencies for TFMs” or add “the” for grammatical consistency: “to the latest dependencies for TFMs.”🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Collections.Specialized/PackageReleaseNotes.txt (1)
5-5: Simplify wording in ALM bullet. The phrase “with respect to” is somewhat verbose; consider a more concise alternative (e.g., “for TFMs”). Also, adding “the” before “dependencies” can improve flow:
- CHANGED the dependencies to the latest and greatest for TFMs
🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt (1)
5-5: Refine ALM bullet for clarity and consistency.
The line currently reads:- CHANGED Dependencies to latest and greatest with respect to TFMsIt’s wordy and missing “the”. Consider a succinct alternative:
- - CHANGED Dependencies to latest and greatest with respect to TFMs + - UPDATED dependencies to the latest versions for TFMs🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Resilience/PackageReleaseNotes.txt (1)
1-5: Validate release note entry for 9.0.6
The new version block follows existing structure. For brevity and clarity, consider simplifying the bullet from- CHANGED Dependencies to latest and greatest with respect to TFMsto
- Updated dependencies to the latest TFMs🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.AspNetCore.Mvc/PackageReleaseNotes.txt (1)
4-5: Shorten ALM description.
ReplaceCHANGED Dependencies to latest and greatest with respect to TFMswith
Updated dependencies to latest TFMsfor brevity and clarity.
🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Xml/PackageReleaseNotes.txt (1)
5-5: Reduce wordiness in ALM.
Consider changingCHANGED Dependencies to latest and greatest with respect to TFMsto
Updated dependencies to latest TFMs🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.IO/PackageReleaseNotes.txt (1)
5-5: Simplify ALM phrasing.
Switch toUpdated dependencies to latest TFMsfor a more concise description.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Collections.Generic/PackageReleaseNotes.txt (1)
5-5: Trim redundant wording.
UseUpdated dependencies to latest TFMsinstead of
CHANGED Dependencies to latest and greatest with respect to TFMs🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Core/PackageReleaseNotes.txt (2)
5-5: Concise ALM entry.
Recommend replacingCHANGED Dependencies to latest and greatest with respect to TFMswith
Updated dependencies to latest TFMs🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs # New Features - ADDED Awaiter c...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
7-8: Enhance feature description.
The "ADDED Awaiter class" entry is clear but could reference the specific method name (RunUntilSucceededOrTimeoutAsync) or link to docs for better traceability.CHANGELOG.md (1)
11-11: Use a colon instead of a semicolon in the introductory sentence.To align with the rest of the changelog’s style, replace the semicolon after “minor new handy feature” with a colon.
test/Cuemon.Core.Tests/Threading/AwaiterTest.cs (2)
80-81: Dangling semicolon is dead codeLine 80 contains a standalone
;that does nothing and can be safely removed to keep the test clean.
56-72: Optional: assert the number of invocations in timeout test
RunUntilSuccessfulOrTimeoutAsync_ShouldReturnUnsuccessfulOnTimeout_NoExceptionsdoesn’t verify how many timesMethodwas invoked. Adding an assertion on call count would tighten the test’s guarantees and guard against regressions in retry logic.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (44)
.nuget/Cuemon.AspNetCore.App/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.AspNetCore.Authentication/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.AspNetCore.Mvc/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.AspNetCore.Razor.TagHelpers/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.AspNetCore/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Core.App/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Core/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Data.Integrity/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Data.SqlClient/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Data/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Diagnostics/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.AspNetCore.Authentication/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Text.Json/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Xml/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.AspNetCore.Mvc.RazorPages/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.AspNetCore.Mvc/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.AspNetCore.Text.Json/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.AspNetCore.Xml/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.AspNetCore/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.Collections.Generic/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.Collections.Specialized/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.Core/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.Data.Integrity/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.Data/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.DependencyInjection/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.Diagnostics/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.Hosting/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.IO/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.Net/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.Reflection/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.Runtime.Caching/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.Text.Json/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.Text/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.Threading/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Extensions.Xml/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.IO/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Net/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Resilience/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Security.Cryptography/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Threading/PackageReleaseNotes.txt(1 hunks).nuget/Cuemon.Xml/PackageReleaseNotes.txt(1 hunks)CHANGELOG.md(1 hunks)test/Cuemon.Core.Tests/Threading/AwaiterTest.cs(1 hunks)
🧰 Additional context used
🪛 LanguageTool
.nuget/Cuemon.Extensions.AspNetCore.Xml/PackageReleaseNotes.txt
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.AspNetCore.Authentication/PackageReleaseNotes.txt
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.AspNetCore.Mvc/PackageReleaseNotes.txt
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.AspNetCore/PackageReleaseNotes.txt
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Text.Json/PackageReleaseNotes.txt
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Core/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Text.Json/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.AspNetCore/PackageReleaseNotes.txt
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.AspNetCore.App/PackageReleaseNotes.txt
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.AspNetCore.Mvc/PackageReleaseNotes.txt
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.AspNetCore.Razor.TagHelpers/PackageReleaseNotes.txt
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Core.App/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Core/PackageReleaseNotes.txt
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs # New Features - ADDED Awaiter c...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Data.Integrity/PackageReleaseNotes.txt
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Data.SqlClient/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Data/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Diagnostics/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.AspNetCore.Authentication/PackageReleaseNotes.txt
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Xml/PackageReleaseNotes.txt
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.AspNetCore.Mvc.RazorPages/PackageReleaseNotes.txt
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.AspNetCore.Text.Json/PackageReleaseNotes.txt
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Collections.Generic/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Collections.Specialized/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Data.Integrity/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Data/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.DependencyInjection/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Diagnostics/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Hosting/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.IO/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Net/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Reflection/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Runtime.Caching/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Text/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Threading/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Xml/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.IO/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Net/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Resilience/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Runtime.Caching/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Security.Cryptography/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Threading/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Xml/PackageReleaseNotes.txt
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: call-build (Debug) / 🛠️ Build
- GitHub Check: call-build (Release) / 🛠️ Build
- GitHub Check: 🪟 Prepare Windows / 🏷️ Restore
🔇 Additional comments (22)
.nuget/Cuemon.Core.App/PackageReleaseNotes.txt (1)
1-2: Release notes header is up-to-date.Version and availability correctly reflect the new 9.0.6 release.
.nuget/Cuemon.Extensions.AspNetCore.Mvc.RazorPages/PackageReleaseNotes.txt (1)
1-6: Release notes entry for version 9.0.6 looks correct.
The new version is properly listed with availability for .NET 9 & .NET 8 and the ALM change is concise.🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.AspNetCore.Mvc.Formatters.Text.Json/PackageReleaseNotes.txt (1)
1-6: Release notes entry for version 9.0.6 looks correct.
The new version is properly listed with availability for .NET 9 & .NET 8 and the ALM change is concise.🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.AspNetCore.Razor.TagHelpers/PackageReleaseNotes.txt (1)
1-6: Release notes entry for version 9.0.6 looks correct.
The new version is properly listed with availability for .NET 9 & .NET 8 and the ALM change is concise.🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.AspNetCore.Authentication/PackageReleaseNotes.txt (1)
1-6: Release notes entry for version 9.0.6 looks correct.
The new version is properly listed with availability for .NET 9 & .NET 8 and the ALM change is concise.🧰 Tools
🪛 LanguageTool
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.Text/PackageReleaseNotes.txt (1)
1-6: Release notes entry for version 9.0.6 looks correct.
The new version is properly listed with availability for .NET 9, .NET 8, & .NET Standard 2.0 and the ALM change is concise.🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
.nuget/Cuemon.Extensions.AspNetCore.Authentication/PackageReleaseNotes.txt (1)
1-2: New version entry added correctly.
The header and availability lines for version 9.0.6 are clear and accurate..nuget/Cuemon.Extensions.Hosting/PackageReleaseNotes.txt (1)
1-2: New version entry updated correctly.
Version 9.0.6 and its availability targets are correctly documented..nuget/Cuemon.Extensions.Xml/PackageReleaseNotes.txt (1)
1-2: Version header looks good.
The new entry for version 9.0.6 and its availability are correctly stated..nuget/Cuemon.Extensions.AspNetCore.Xml/PackageReleaseNotes.txt (1)
1-2: New version header is correct.
Version 9.0.6 and its platform support are accurately captured..nuget/Cuemon.AspNetCore.App/PackageReleaseNotes.txt (1)
1-2: Version 9.0.6 entry added.
The header reflects the new release and target frameworks correctly..nuget/Cuemon.Data.SqlClient/PackageReleaseNotes.txt (1)
1-3: Version entry for 9.0.6 is correct.
This adds the new version with proper availability targets..nuget/Cuemon.Data/PackageReleaseNotes.txt (1)
1-3: Version entry for 9.0.6 is correct.
New version entry aligns with existing format..nuget/Cuemon.Extensions.Text.Json/PackageReleaseNotes.txt (1)
1-3: Version 9.0.6 header and availability look good.
Entry follows the standard pattern..nuget/Cuemon.Security.Cryptography/PackageReleaseNotes.txt (1)
1-3: New version header is accurate.
Availability targets are consistent with other packages..nuget/Cuemon.Data.Integrity/PackageReleaseNotes.txt (1)
1-3: 9.0.6 entry and availability are correctly added.
Matches package versioning conventions..nuget/Cuemon.Extensions.AspNetCore.Mvc/PackageReleaseNotes.txt (1)
1-2: Confirm version header consistency.
The "Version 9.0.6" entry and its availability lines follow the established format across release notes..nuget/Cuemon.Xml/PackageReleaseNotes.txt (1)
1-2: Verify version entry formatting.
The new "Version 9.0.6" header and availability align with previous entries..nuget/Cuemon.IO/PackageReleaseNotes.txt (1)
1-2: Check header format.
The new version and availability section match the existing pattern..nuget/Cuemon.Extensions.Collections.Generic/PackageReleaseNotes.txt (1)
1-2: Confirm version declaration style.
"Version 9.0.6" and its availability are consistent with earlier notes..nuget/Cuemon.Core/PackageReleaseNotes.txt (1)
1-2: Validate new version header.
The header and availability for 9.0.6 maintain format consistency with prior entries.test/Cuemon.Core.Tests/Threading/AwaiterTest.cs (1)
78-88: Immediate-cancel token may hide real timeout behaviourCreating a
CancellationTokenSource(TimeSpan.FromMilliseconds(0))produces a token that is already cancelled before the first await. The test effectively checks cancellation rather than timeout logic.
If the intention is to validate timeout with cancellation support, consider cancelling slightly after the timeout (e.g., 20 ms) to keep the two mechanisms distinguishable.
| # ALM | ||
| - CHANGED Dependencies to latest and greatest with respect to TFMs |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Release notes missing feature summaries for new async utilities and tests.
The 9.0.6 entry currently only updates dependencies but doesn’t document the key additions delivered in this PR (the Awaiter retry utility, AsyncRunOptions, the AsyncOptions constructor change, and the new unit tests). Please expand the # ALM section to include these features, for example:
# ALM
- - CHANGED Dependencies to latest and greatest with respect to TFMs
+ - UPDATED dependencies to the latest versions for supported TFMs
+ - ADDED `AsyncRunOptions` class for configurable timeout/delay in async operations
+ - ADDED `Awaiter.RunUntilSucceededOrTimeoutAsync` retry utility in `Cuemon.Threading`
+ - UPDATED `AsyncOptions` constructor default to `CancellationToken.None`
+ - ADDED comprehensive unit tests for `Awaiter` in `AwaiterTest`📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| # ALM | |
| - CHANGED Dependencies to latest and greatest with respect to TFMs | |
| # ALM | |
| - UPDATED dependencies to the latest versions for supported TFMs | |
| - ADDED `AsyncRunOptions` class for configurable timeout/delay in async operations | |
| - ADDED `Awaiter.RunUntilSucceededOrTimeoutAsync` retry utility in `Cuemon.Threading` | |
| - UPDATED `AsyncOptions` constructor default to `CancellationToken.None` | |
| - ADDED comprehensive unit tests for `Awaiter` in `AwaiterTest` |
🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: You might be missing the article “the” here.
Context: ...d 2.0 # ALM - CHANGED Dependencies to latest and greatest with respect to TFMs Ver...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~5-~5: ‘with respect to’ might be wordy. Consider a shorter alternative.
Context: ...GED Dependencies to latest and greatest with respect to TFMs Version 9.0.5 Availability: .NET...
(EN_WORDINESS_PREMIUM_WITH_RESPECT_TO)
🤖 Prompt for AI Agents
In .nuget/Cuemon.Core.App/PackageReleaseNotes.txt around lines 4 to 5, the
release notes for version 9.0.6 only mention dependency updates and omit key new
features. Expand the # ALM section to include summaries of the new async
utilities like the Awaiter retry utility, AsyncRunOptions, the AsyncOptions
constructor change, and the added unit tests to accurately reflect the PR's
contributions.
| - Awaiter class in the Cuemon.Threading namespace that provides a set of static methods for awaiting asynchronous operations: | ||
| - RunUntilSuccessfulOrTimeoutAsync repeatedly invokes a specified asynchronous lambda expression until it succeeds or a configured timeout is reached | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changelog entry is incomplete and mismatches the PR details.
- The method name in the changelog (
RunUntilSuccessfulOrTimeoutAsync) does not match the actual signature introduced (RunUntilSucceededOrTimeoutAsync). - The new
AsyncRunOptionsclass is missing from the “Added” list. - The update to the
AsyncOptionsconstructor (defaultCancellationToken→CancellationToken.None) is not documented.
Apply this diff to correct and complete the entry:
@@ -11,7 +11,7 @@ This is a service update that focuses on package dependencies and a minor new
-feature; `Cuemon.Threading.Awaiter.RunUntilSuccessfulOrTimeoutAsync` method.
+feature: `Cuemon.Threading.Awaiter.RunUntilSucceededOrTimeoutAsync` method.
### Added
-- Awaiter class in the Cuemon.Threading namespace that provides a set of static methods for awaiting asynchronous operations:
- - RunUntilSuccessfulOrTimeoutAsync repeatedly invokes a specified asynchronous lambda expression until it succeeds or a configured timeout is reached
+- Awaiter class in the Cuemon.Threading namespace that provides a set of static methods for awaiting asynchronous operations:
+ - RunUntilSucceededOrTimeoutAsync repeatedly invokes a specified asynchronous operation until it succeeds or a configured timeout is reached.
+- AsyncRunOptions class in the Cuemon.Core.Threading namespace providing configurable timeout (default 5s) and delay (default 100ms) for retries.
+- AsyncOptions constructor now defaults its `CancellationToken` parameter to `CancellationToken.None` for clarity.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - Awaiter class in the Cuemon.Threading namespace that provides a set of static methods for awaiting asynchronous operations: | |
| - RunUntilSuccessfulOrTimeoutAsync repeatedly invokes a specified asynchronous lambda expression until it succeeds or a configured timeout is reached | |
| This is a service update that focuses on package dependencies and a minor new feature: `Cuemon.Threading.Awaiter.RunUntilSucceededOrTimeoutAsync` method. | |
| ### Added | |
| - Awaiter class in the Cuemon.Threading namespace that provides a set of static methods for awaiting asynchronous operations: | |
| - RunUntilSucceededOrTimeoutAsync repeatedly invokes a specified asynchronous operation until it succeeds or a configured timeout is reached. | |
| - AsyncRunOptions class in the Cuemon.Core.Threading namespace providing configurable timeout (default 5s) and delay (default 100ms) for retries. | |
| - AsyncOptions constructor now defaults its `CancellationToken` parameter to `CancellationToken.None` for clarity. |
🤖 Prompt for AI Agents
In CHANGELOG.md around lines 15 to 17, the changelog entry has an incorrect
method name and is missing details. Update the method name from
RunUntilSuccessfulOrTimeoutAsync to RunUntilSucceededOrTimeoutAsync to match the
actual code. Add the new AsyncRunOptions class to the "Added" section. Also,
document the change in the AsyncOptions constructor where the default
CancellationToken was changed to CancellationToken.None. Ensure the changelog
fully reflects all relevant changes from the PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
.github/workflows/pipelines.yml (1)
102-102: Validate build input support and optimize build step
Verify that thecodebeltnet/jobs-dotnet-test@v2reusable workflow supports thebuildparameter to avoid CI failures. Optionally, to speed up Linux runs, you can limit the build step to Windows only:- build: true # we need to build for .net48 + build: ${{ matrix.os == 'windows-2022' }} # only build on Windows for .NET48
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (2)
.github/workflows/pipelines.yml (2)
31-36: Consider removing the commented-outprepare_windowsblock.Leaving large commented sections can clutter the workflow. If Windows caching is no longer needed, remove these lines entirely to keep the pipeline clean and maintainable.
101-116: Enhance the Windows test job clarity and performance.
- The job and step share the vague name
call-test; consider renaming tocall-test-windowsfor clearer logs.- Caching was removed when disabling
prepare_windows, so the Windows job now always restores from scratch. You may reintroduce caching (e.g., via a lightweightprepare_windowsjob or adding arestore-cache-keyinput) to speed up runs.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/workflows/pipelines.yml(5 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: call-build (Release) / 🛠️ Build
- GitHub Check: call-build (Debug) / 🛠️ Build
🔇 Additional comments (4)
.github/workflows/pipelines.yml (4)
178-181: Downstream update for SonarCloud is correct.The
sonarcloudjob now depends on bothtest_linuxandtest_windows, ensuring analyses only run after all test suites complete.
189-193: Downstream update for Codecov is correct.The
codecovjob’sneedsnow includes both test jobs, aligning coverage reporting with multi-platform testing.
198-202: Downstream update for CodeQL is correct.Including both
test_linuxandtest_windowsin theneedsensures security scans run after the full test matrix.
205-209: Deploy dependencies updated appropriately.The
deployjob now correctly awaitstest_linux,test_windows, and all other prerequisites before pushing packages.
|
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
…into v9.0.6/awaiter



This pull request introduces significant enhancements to the threading utilities in the
Cuemon.Corelibrary, including the addition of new classes and methods to streamline asynchronous operations. Key changes include the creation of theAsyncRunOptionsclass for configuring async operations, the implementation of theAwaiterstatic class for retrying async methods with timeout and delay options, and comprehensive unit tests to validate these new functionalities.Enhancements to Asynchronous Operation Configuration:
AsyncRunOptionsclass: Introduced to provide options for configuring timeout and delay settings for asynchronous operations. Defaults are set to 5 seconds forTimeoutand 100 milliseconds forDelay. (src/Cuemon.Core/Threading/AsyncRunOptions.cs, src/Cuemon.Core/Threading/AsyncRunOptions.csR1-R49)Improved Asynchronous Execution:
Awaiterstatic class: Added theRunUntilSucceededOrTimeoutAsyncmethod to repeatedly invoke an asynchronous method until it succeeds or a timeout is reached. Handles exceptions and returns aConditionalValueindicating success or failure. (src/Cuemon.Core/Threading/Awaiter.cs, src/Cuemon.Core/Threading/Awaiter.csR1-R64)Unit Testing Coverage:
Awaiter: Added unit tests inAwaiterTestto validate the behavior ofRunUntilSucceededOrTimeoutAsync. Tests cover scenarios such as immediate success, retries until success, timeout without exceptions, timeout with a single exception, and timeout with multiple exceptions aggregated into anAggregateException. (test/Cuemon.Core.Tests/Threading/AwaiterTest.cs, test/Cuemon.Core.Tests/Threading/AwaiterTest.csR1-R125)Minor Refinements:
AsyncOptionsconstructor: Changed the default value ofCancellationTokenfromdefaulttoCancellationToken.Nonefor better clarity and consistency. (src/Cuemon.Core/Threading/AsyncOptions.cs, src/Cuemon.Core/Threading/AsyncOptions.csL37-R37)Summary by CodeRabbit