diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/push/ClientPresenceManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/push/ClientPresenceManager.java
index 5015c8da61199ef3671335712c5abd775ea842fa..fc7d455e1a99de6ef9c4eaa7cbf533866e649fee 100644
--- a/service/src/main/java/org/whispersystems/textsecuregcm/push/ClientPresenceManager.java
+++ b/service/src/main/java/org/whispersystems/textsecuregcm/push/ClientPresenceManager.java
@@ -235,11 +235,12 @@ public class ClientPresenceManager extends RedisClusterPubSubAdapter<String, Str
 
   public boolean clearPresence(final UUID accountUuid, final long deviceId, final DisplacedPresenceListener listener) {
     final String presenceKey = getPresenceKey(accountUuid, deviceId);
-    if (!displacementListenersByPresenceKey.remove(presenceKey, listener)) {
+    if (displacementListenersByPresenceKey.remove(presenceKey, listener)) {
+      return clearPresence(presenceKey);
+    } else {
       displacementListenerAlreadyRemovedCounter.increment();
+      return false;
     }
-    return clearPresence(presenceKey);
-
   }
 
   private boolean clearPresence(final String presenceKey) {
diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/push/ClientPresenceManagerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/push/ClientPresenceManagerTest.java
index 8ce5dfaa4c0fb391321abb6da6381adece667e55..82e70b5cf7ebbb7ec48f4c129c56bb3af24afaa8 100644
--- a/service/src/test/java/org/whispersystems/textsecuregcm/push/ClientPresenceManagerTest.java
+++ b/service/src/test/java/org/whispersystems/textsecuregcm/push/ClientPresenceManagerTest.java
@@ -10,6 +10,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTimeoutPreemptively;
 import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 import static org.mockito.Mockito.mock;
 
 import io.lettuce.core.cluster.api.StatefulRedisClusterConnection;
@@ -161,6 +162,8 @@ class ClientPresenceManagerTest {
     assertFalse(clientPresenceManager.isPresent(accountUuid, deviceId));
 
     clientPresenceManager.setPresent(accountUuid, deviceId, NO_OP);
+    assertFalse(clientPresenceManager.clearPresence(accountUuid, deviceId,
+        ignored -> fail("this listener should never be called")));
     assertTrue(clientPresenceManager.clearPresence(accountUuid, deviceId, NO_OP));
 
     clientPresenceManager.setPresent(accountUuid, deviceId, NO_OP);