@@ -74,8 +74,11 @@ private async ValueTask FormatOperationResultAsync(
74
74
MessageHelper . WriteNextMessage ( _payloadFormatter , operationResult , buffer ) ;
75
75
MessageHelper . WriteCompleteMessage ( buffer ) ;
76
76
77
- await outputStream . WriteAsync ( buffer . GetInternalBuffer ( ) , 0 , buffer . Length , ct ) . ConfigureAwait ( false ) ;
78
- await outputStream . FlushAsync ( ct ) . ConfigureAwait ( false ) ;
77
+ if ( ! ct . IsCancellationRequested )
78
+ {
79
+ await outputStream . WriteAsync ( buffer . GetInternalBuffer ( ) , 0 , buffer . Length , ct ) . ConfigureAwait ( false ) ;
80
+ await outputStream . FlushAsync ( ct ) . ConfigureAwait ( false ) ;
81
+ }
79
82
}
80
83
catch ( Exception ex )
81
84
{
@@ -111,8 +114,14 @@ private async ValueTask FormatResultBatchAsync(
111
114
{
112
115
buffer ??= new ArrayWriter ( ) ;
113
116
MessageHelper . WriteNextMessage ( _payloadFormatter , operationResult , buffer ) ;
117
+
114
118
writer . Write ( buffer . GetWrittenSpan ( ) ) ;
115
- await writer . FlushAsync ( ct ) . ConfigureAwait ( false ) ;
119
+
120
+ if ( ! ct . IsCancellationRequested )
121
+ {
122
+ await writer . FlushAsync ( ct ) . ConfigureAwait ( false ) ;
123
+ }
124
+
116
125
keepAlive ? . Reset ( ) ;
117
126
buffer . Reset ( ) ;
118
127
}
@@ -148,8 +157,11 @@ private async ValueTask FormatResultBatchAsync(
148
157
buffer ? . Dispose ( ) ;
149
158
}
150
159
151
- MessageHelper . WriteCompleteMessage ( writer ) ;
152
- await writer . FlushAsync ( ct ) . ConfigureAwait ( false ) ;
160
+ if ( ! ct . IsCancellationRequested )
161
+ {
162
+ MessageHelper . WriteCompleteMessage ( writer ) ;
163
+ await writer . FlushAsync ( ct ) . ConfigureAwait ( false ) ;
164
+ }
153
165
}
154
166
155
167
private async ValueTask FormatResponseStreamAsync (
@@ -165,8 +177,11 @@ private async ValueTask FormatResponseStreamAsync(
165
177
await formatter . ProcessAsync ( ct ) . ConfigureAwait ( false ) ;
166
178
}
167
179
168
- MessageHelper . WriteCompleteMessage ( writer ) ;
169
- await writer . FlushAsync ( ct ) . ConfigureAwait ( false ) ;
180
+ if ( ! ct . IsCancellationRequested )
181
+ {
182
+ MessageHelper . WriteCompleteMessage ( writer ) ;
183
+ await writer . FlushAsync ( ct ) . ConfigureAwait ( false ) ;
184
+ }
170
185
}
171
186
172
187
private sealed class StreamFormatter (
@@ -207,6 +222,12 @@ public async Task ProcessAsync(CancellationToken ct)
207
222
}
208
223
}
209
224
}
225
+ catch ( OperationCanceledException )
226
+ {
227
+ // if the operation was canceled we do not need to log this
228
+ // and will stop gracefully.
229
+ return ;
230
+ }
210
231
finally
211
232
{
212
233
await responseStream . DisposeAsync ( ) . ConfigureAwait ( false ) ;
0 commit comments