diff --git a/contractcourt/channel_arbitrator.go b/contractcourt/channel_arbitrator.go
index <HASH>..<HASH> 100644
--- a/contractcourt/channel_arbitrator.go
+++ b/contractcourt/channel_arbitrator.go
@@ -305,8 +305,6 @@ func (c *ChannelArbitrator) Stop() error {
 	close(c.quit)
 	c.wg.Wait()
 
-	c.cfg.BlockEpochs.Cancel()
-
 	return nil
 }
 
@@ -1293,7 +1291,10 @@ func (c *ChannelArbitrator) UpdateContractSignals(newSignals *ContractSignals) {
 func (c *ChannelArbitrator) channelAttendant(bestHeight int32) {
 
 	// TODO(roasbeef): tell top chain arb we're done
-	defer c.wg.Done()
+	defer func() {
+		c.cfg.BlockEpochs.Cancel()
+		c.wg.Done()
+	}()
 
 	for {
 		select {
contractcourt/channel_arbitrator: stop block epoch on channel attendant exit