Block arguments aren't required, and I'm using this without a block in another PR - which is to say I'd rather not enforce this being set.

The `return` is actually so we don't call `coerce_value` on `nil`, which is also the reason I used the intermediate variable.  Given that the coercion is user-supplied I'd rather not make assumptions about the effects of calling it with `nil`, even though we're about to raise an error and bail.