Index: /trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 17282)
+++ /trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 17283)
@@ -792,6 +792,12 @@
             Set<Way> result = new HashSet<>();
             for (Way way : node.getParentWays()) {
-                List<Node> wayNodes = way.getNodes();
-                if (wayNodes.removeIf(node::equals)) {
+                List<Node> wayNodes;
+                if (!way.isIncomplete()) {
+                    wayNodes = way.calculateRemoveNodes(Collections.singleton(node));
+                } else {
+                    wayNodes = way.getNodes();
+                    wayNodes.removeIf(node::equals);
+                }
+                if (wayNodes.size() < way.getNodesCount()) {
                     if (wayNodes.size() < 2) {
                         deleteWay(way);
Index: /trunk/test/unit/org/openstreetmap/josm/data/osm/DataSetTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/osm/DataSetTest.java	(revision 17282)
+++ /trunk/test/unit/org/openstreetmap/josm/data/osm/DataSetTest.java	(revision 17283)
@@ -12,6 +12,6 @@
 
 import org.junit.Assert;
+import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
-import org.junit.jupiter.api.Test;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.Bounds;
@@ -168,12 +168,18 @@
         Node n2 = new Node(2);
         Node n3 = new Node(3);
+        Node n4 = new Node(4);
         Way w1 = new Way(1);
-        w1.setNodes(Arrays.asList(n1, n2, n3, n1));
+        w1.setNodes(Arrays.asList(n1, n2, n3, n4, n1));
+        w1.setIncomplete(false);
+        assertEquals(5, w1.getNodesCount());
+        assertTrue(w1.isClosed());
         ds.addPrimitive(n1);
         ds.addPrimitive(n2);
         ds.addPrimitive(n3);
+        ds.addPrimitive(n4);
         ds.addPrimitive(w1);
         ds.unlinkNodeFromWays(n1);
-        assertEquals(2, w1.getRealNodesCount());
+        assertTrue(w1.isClosed());
+        assertEquals(4, w1.getNodesCount());
     }
 
