Replace label and break with defer and return

Labels and outer breaks are not very elegant, so I'm proposing using a simple `return` instead of the `break` and deferring the `stop()` using a language feature. This makes clear that `stop()` is a cleanup action and the code inside the main loop doesn't have to worry about it.