# System.Threading.Tasks

``` diff
 namespace System.Threading.Tasks {
     public class TaskCanceledException : OperationCanceledException {
+        public TaskCanceledException(string message, Exception innerException, CancellationToken token);
     }
+    public readonly struct ValueTask : IEquatable<ValueTask> {
+        public ValueTask(IValueTaskSource source, short token);
+        public ValueTask(Task task);
+        public bool IsCanceled { get; }
+        public bool IsCompleted { get; }
+        public bool IsCompletedSuccessfully { get; }
+        public bool IsFaulted { get; }
+        public Task AsTask();
+        public ConfiguredValueTaskAwaitable ConfigureAwait(bool continueOnCapturedContext);
+        public override bool Equals(object obj);
+        public bool Equals(ValueTask other);
+        public ValueTaskAwaiter GetAwaiter();
+        public override int GetHashCode();
+        public static bool operator ==(ValueTask left, ValueTask right);
+        public static bool operator !=(ValueTask left, ValueTask right);
+        public ValueTask Preserve();
+    }
-    public struct ValueTask<TResult> : IEquatable<ValueTask<TResult>> {
+    public readonly struct ValueTask<TResult> : IEquatable<ValueTask<TResult>> {
+        public ValueTask(IValueTaskSource<TResult> source, short token);
-        public static AsyncValueTaskMethodBuilder<TResult> CreateAsyncMethodBuilder();

+        public ValueTask<TResult> Preserve();
     }
 }
```

