232 : ICriticalNotifyCompletion
233 {
234 if (default(TAwaiter) != null && awaiter is ITaskAwaiter)
235 {
236 TaskAwaiter.UnsafeOnCompletedInternal(
Unsafe.As<TAwaiter, TaskAwaiter>(ref awaiter).m_task, box, continueOnCapturedContext: true);
237 return;
238 }
239 if (default(TAwaiter) != null && awaiter is IConfiguredTaskAwaiter)
240 {
241 ref ConfiguredTaskAwaitable.ConfiguredTaskAwaiter reference = ref
Unsafe.As<TAwaiter, ConfiguredTaskAwaitable.ConfiguredTaskAwaiter>(ref awaiter);
242 TaskAwaiter.UnsafeOnCompletedInternal(reference.m_task, box, reference.m_continueOnCapturedContext);
243 return;
244 }
245 if (default(TAwaiter) != null && awaiter is IStateMachineBoxAwareAwaiter)
246 {
247 try
248 {
249 ((IStateMachineBoxAwareAwaiter)(object)awaiter).AwaitUnsafeOnCompleted(box);
250 return;
251 }
253 {
255 return;
256 }
257 }
258 try
259 {
260 awaiter.UnsafeOnCompleted(box.MoveNextAction);
261 }
262 catch (Exception exception2)
263 {
265 }
266 }
static void ThrowAsync(Exception exception, SynchronizationContext targetContext)