diff --git a/blocksuite/framework/sync/src/doc/engine.ts b/blocksuite/framework/sync/src/doc/engine.ts index 83fd4ff733..cd40273c3a 100644 --- a/blocksuite/framework/sync/src/doc/engine.ts +++ b/blocksuite/framework/sync/src/doc/engine.ts @@ -132,12 +132,13 @@ export class DocEngine { this.logger ); - cleanUp.push( - state.mainPeer.onStatusChange.subscribe(() => { - if (!signal.aborted) - this.updateSyncingState(state.mainPeer, state.shadowPeers); - }).unsubscribe - ); + const subscriber = state.mainPeer.onStatusChange.subscribe(() => { + if (!signal.aborted) + this.updateSyncingState(state.mainPeer, state.shadowPeers); + }); + cleanUp.push(() => { + subscriber.unsubscribe(); + }); this.updateSyncingState(state.mainPeer, state.shadowPeers); @@ -152,12 +153,15 @@ export class DocEngine { this.priorityTarget, this.logger ); - cleanUp.push( - peer.onStatusChange.subscribe(() => { - if (!signal.aborted) - this.updateSyncingState(state.mainPeer, state.shadowPeers); - }).unsubscribe - ); + + const subscriber = peer.onStatusChange.subscribe(() => { + if (!signal.aborted) + this.updateSyncingState(state.mainPeer, state.shadowPeers); + }); + cleanUp.push(() => { + subscriber.unsubscribe(); + }); + return peer; });