diff --git a/protocols/primary-backup/src/main/java/io/atomix/protocols/backup/proxy/PrimaryBackupProxy.java b/protocols/primary-backup/src/main/java/io/atomix/protocols/backup/proxy/PrimaryBackupProxy.java
index <HASH>..<HASH> 100644
--- a/protocols/primary-backup/src/main/java/io/atomix/protocols/backup/proxy/PrimaryBackupProxy.java
+++ b/protocols/primary-backup/src/main/java/io/atomix/protocols/backup/proxy/PrimaryBackupProxy.java
@@ -229,6 +229,7 @@ public class PrimaryBackupProxy extends AbstractPrimitiveProxy {
           .whenCompleteAsync((response, error) -> {
             protocol.unregisterEventListener(sessionId);
             clusterService.removeListener(clusterEventListener);
+            future.complete(null);
           }, threadContext);
     } else {
       future.complete(null);
Ensure PrimaryBackupProxy.close future is properly completed.