For the author's toy example, I don't see how this is better than using begin... rescue. def weather_for(project) begin project.creator.address. country.capital.weather rescue NoMethodError nil end end
Instead, he later changes weather_for to accept and return this new `Optional` construct, making it chainable, and dealing with this "if nil don't break!" in one spot and one spot only.