Append a protocol if its missing.

Fixes #2242 
Talking about line 142? In what way? In this case if `follows` is true the block should always return, however `failure` must exist before it can be called. I'm not seeing how the two if blocks could be combined.