ABCD is a trivial superkey. Every algorithm has to generate ABCD. But ABCD isn't a candidate key in this relation. By definition, a candidate key is a minimal superkey.
You can tell the algorithm in your link is inadequate by simple inspection. It doesn't generate A as a candidate key, but you're given A -> BCD, so A is clearly a candidate key. There are two more candidate keys besides A.
This SO answer by @ErwinSmout describes an algorithm that's suitable for pencil and paper. Most textbooks include algorithms that are suitable for automation.