Adds `ObservableValue` class for observing state changes.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6e2add9..ea7fab5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,9 @@
 ## 2.10.0-dev
 
-* Add `CancelableOperation.thenOperation` which gives more flexibility to
+* Adds `CancelableOperation.thenOperation` which gives more flexibility to
   complete the resulting operation.
-* Add `CancelableCompleter.completeOperation`.
+* Adds `CancelableCompleter.completeOperation`.
+* Adds `ObservableValue` for managing a simple observable state change.
 
 ## 2.9.0
 
diff --git a/lib/async.dart b/lib/async.dart
index 10e7fe7..21c2d6d 100644
--- a/lib/async.dart
+++ b/lib/async.dart
@@ -21,6 +21,7 @@
 export 'src/future_group.dart';
 export 'src/lazy_stream.dart';
 export 'src/null_stream_sink.dart';
+export 'src/observable_value.dart';
 export 'src/restartable_timer.dart';
 export 'src/result/result.dart';
 export 'src/result/error.dart';
diff --git a/pubspec.yaml b/pubspec.yaml
index cb6f348..0c3bf78 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,11 +1,11 @@
 name: async
-version: 2.10.0-dev
+version: 2.10.0
 
 description: Utility functions and classes related to the 'dart:async' library.
 repository: https://github.com/dart-lang/async
 
 environment:
-  sdk: ">=2.14.0 <3.0.0"
+  sdk: ">=2.17.0 <3.0.0"
 
 dependencies:
   collection: ^1.15.0
diff --git a/test/cancelable_operation_test.dart b/test/cancelable_operation_test.dart
index f073e80..3fd8bd6 100644
--- a/test/cancelable_operation_test.dart
+++ b/test/cancelable_operation_test.dart
@@ -533,7 +533,6 @@
         onCancel = () => throw 'error';
 
         expect(runThen().value, throwsA('error'));
-        originalCompleter.operation.cancel();
       });
 
       test('onCancel returns Future that throws error', () {