added fetch with blocks condition

##### blocks are lazy evaluated while the default value (provided as second argument) is eagerly evaluated.

The concern is not when you don't hit the key (in this case the default value will be called anyway, regardless if you are in second argument case or block case

The concern is *when the key is hit*, which probably is like 99% of the time.