diff --git a/pkg/dds/CHANGELOG.md b/pkg/dds/CHANGELOG.md
index 4d59198..e68dd7c 100644
--- a/pkg/dds/CHANGELOG.md
+++ b/pkg/dds/CHANGELOG.md
@@ -5,6 +5,7 @@
 # 2.7.1
 - Updated `vm_service` version to >=9.0.0 <11.0.0.
 - Simplified the DevTools URI composed by DDS.
+- Fix issue where DDS was invoking an unimplemented RPC against a non-VM target.
 
 # 2.7.0
 - Added `DartDevelopmentService.setExternalDevToolsUri(Uri uri)`, adding support for registering an external DevTools server with DDS.
diff --git a/pkg/dds/lib/src/dds_impl.dart b/pkg/dds/lib/src/dds_impl.dart
index acd5d43..9d582c6 100644
--- a/pkg/dds/lib/src/dds_impl.dart
+++ b/pkg/dds/lib/src/dds_impl.dart
@@ -27,6 +27,7 @@
 import 'expression_evaluator.dart';
 import 'isolate_manager.dart';
 import 'package_uri_converter.dart';
+import 'rpc_error_codes.dart';
 import 'stream_manager.dart';
 
 @visibleForTesting
@@ -483,3 +484,18 @@
   late WebSocketChannel _vmServiceSocket;
   late HttpServer _server;
 }
+
+extension PeerExtension on json_rpc.Peer {
+  Future<dynamic> sendRequestAndIgnoreMethodNotFound(
+    String method, [
+    dynamic parameters,
+  ]) async {
+    try {
+      await sendRequest(method, parameters);
+    } on json_rpc.RpcException catch (e) {
+      if (e.code != RpcErrorCodes.kMethodNotFound) {
+        rethrow;
+      }
+    }
+  }
+}
diff --git a/pkg/dds/lib/src/isolate_manager.dart b/pkg/dds/lib/src/isolate_manager.dart
index ba725ce..837fd39 100644
--- a/pkg/dds/lib/src/isolate_manager.dart
+++ b/pkg/dds/lib/src/isolate_manager.dart
@@ -242,7 +242,7 @@
           }
         }
         if (dds.cachedUserTags.isNotEmpty) {
-          await dds.vmServiceClient.sendRequest(
+          await dds.vmServiceClient.sendRequestAndIgnoreMethodNotFound(
             'streamCpuSamplesWithUserTag',
             {
               'userTags': dds.cachedUserTags,
diff --git a/pkg/dds/lib/src/stream_manager.dart b/pkg/dds/lib/src/stream_manager.dart
index b6b4080..15dcea3 100644
--- a/pkg/dds/lib/src/stream_manager.dart
+++ b/pkg/dds/lib/src/stream_manager.dart
@@ -238,19 +238,13 @@
         if (streamListeners[stream]!.contains(client)) {
           throw kStreamAlreadySubscribedException;
         } else if (!streamNewlySubscribed && includePrivates != null) {
-          try {
-            await dds.vmServiceClient.sendRequest(
-                '_setStreamIncludePrivateMembers',
-                {'streamId': stream, 'includePrivateMembers': includePrivates});
-          } on json_rpc.RpcException catch (e) {
-            // This private RPC might not be present. If it's not, we're communicating with an older
-            // VM that doesn't support filtering private members, so they will always be included in
-            // responses. Handle the method not found exception so the streamListen call doesn't
-            // fail for older VMs.
-            if (e.code != RpcErrorCodes.kMethodNotFound) {
-              rethrow;
-            }
-          }
+          // This private RPC might not be present. If it's not, we're communicating with an older
+          // VM that doesn't support filtering private members, so they will always be included in
+          // responses. Handle the method not found exception so the streamListen call doesn't
+          // fail for older VMs.
+          await dds.vmServiceClient.sendRequestAndIgnoreMethodNotFound(
+              '_setStreamIncludePrivateMembers',
+              {'streamId': stream, 'includePrivateMembers': includePrivates});
         }
         if (client != null) {
           streamListeners[stream]!.add(client);
@@ -352,9 +346,12 @@
           _profilerUserTagSubscriptions.remove(subscribedTag);
         }
       }
-      await dds.vmServiceClient.sendRequest('streamCpuSamplesWithUserTag', {
-        'userTags': _profilerUserTagSubscriptions.toList(),
-      });
+      await dds.vmServiceClient.sendRequestAndIgnoreMethodNotFound(
+        'streamCpuSamplesWithUserTag',
+        {
+          'userTags': _profilerUserTagSubscriptions.toList(),
+        },
+      );
     });
   }
 
