[[!comment format=mdwn
 username="joey"
 subject="""comment 4"""
 date="2016-06-14T03:41:53Z"
 content="""
When `requires` is used as in your first example, Reboot.toKernelNewerThan
does not need to throw an exception. It could just return FailedChange
and then Sbuild.builtFor wouldn't get run.

Your second example, as written is actually buggy. If Apt.upgraded
fails for some reason, then Reboot.toKernelNewerThan never gets run,
and then Sbuilt.builtFor can still run with the wrong kernel version.

The second example could instead be written thus:

	& osDebian Testing "i386"
	& combineProperties "sbuild setup"
		( props
			& Apt.stdSourcesList `onChange` (Apt.upgraded `before` Apt.cacheCleaned `before` Reboot.toKernelNewerThan "4")
			& Sbuilt.builtFor ...
		)

Then if any part of the upgrade fails the following properties don't run
thanks to `combineProperties`. And here too Reboot.toKernelNewerThan does
not need to thow an exception.

So, I'm not seeing any good use cases for it throwing an exception in these
examples.
"""]]
