diff --git a/miner/miner.go b/miner/miner.go
index 4e99245f8c66be999addfa41687569f8ff82ba52..20ca81648af50ce729631efe8125442b9c587f88 100644
--- a/miner/miner.go
+++ b/miner/miner.go
@@ -45,6 +45,7 @@ func New(eth core.Backend, mux *event.TypeMux, pow pow.PoW) *Miner {
 // and halt your mining operation for as long as the DOS continues.
 func (self *Miner) update() {
 	events := self.mux.Subscribe(downloader.StartEvent{}, downloader.DoneEvent{}, downloader.FailedEvent{})
+out:
 	for ev := range events.Chan() {
 		switch ev.(type) {
 		case downloader.StartEvent:
@@ -62,11 +63,11 @@ func (self *Miner) update() {
 			if shouldStart {
 				self.Start(self.coinbase, self.threads)
 			}
+			// unsubscribe. we're only interested in this event once
+			events.Unsubscribe()
+			// stop immediately and ignore all further pending events
+			break out
 		}
-		// unsubscribe. we're only interested in this event once
-		events.Unsubscribe()
-		// stop immediately and ignore all further pending events
-		break
 	}
 }