Rewrite callback to eliminate early break/return.

Support changes in ActiveSupport::Callbacks for versions 4.1+.