@@ -173,28 +173,28 @@ method stop*(disco: ServiceDiscovery) {.async: (raises: []).} =
173173
174174 # stops the advertiser maintenance loop before draining advertiser tasks,
175175 # so shutdown cannot spawn new registration work while cleanup is running
176- if not disco.advertiserMaintenanceLoop.isNil () :
176+ if not disco.advertiserMaintenanceLoop.isNil:
177177 await disco.advertiserMaintenanceLoop.cancelAndWait ()
178178 disco.advertiserMaintenanceLoop = nil
179179
180180 await disco.advertiser.clear ()
181181
182- disco.serviceBootstrapFuts. cancelSoon ()
183- disco.serviceBootstrapFuts = @ []
182+ let serviceBootstrapFuts = move disco.serviceBootstrapFuts
183+ await noCancel serviceBootstrapFuts. cancelAndWait ()
184184
185- if not disco.selfSignedPeerRecordLoop.isNil () :
186- disco.selfSignedPeerRecordLoop.cancelSoon ()
185+ if not disco.selfSignedPeerRecordLoop.isNil:
186+ await disco.selfSignedPeerRecordLoop.cancelAndWait ()
187187 disco.selfSignedPeerRecordLoop = nil
188188
189- if not disco.pruneExpiredAdsLoop.isNil () :
190- disco.pruneExpiredAdsLoop.cancelSoon ()
189+ if not disco.pruneExpiredAdsLoop.isNil:
190+ await disco.pruneExpiredAdsLoop.cancelAndWait ()
191191 disco.pruneExpiredAdsLoop = nil
192192
193- if not disco.refreshServiceTablesLoop.isNil () :
194- disco.refreshServiceTablesLoop.cancelSoon ()
193+ if not disco.refreshServiceTablesLoop.isNil:
194+ await disco.refreshServiceTablesLoop.cancelAndWait ()
195195 disco.refreshServiceTablesLoop = nil
196196
197- if not disco.localRegistrationLoop.isNil () :
197+ if not disco.localRegistrationLoop.isNil:
198198 await disco.localRegistrationLoop.cancelAndWait ()
199199 disco.localRegistrationLoop = nil
200200
0 commit comments