If you compare
FullForm[?prom[e]]
with
FullForm[?prom[f]]
you should notice that the two are the same. You might think that one should have replaced all the "e" with "f".
I believe your problems are caused by your use of one symbol as a pattern on the left hand side of your function definition, but not having that symbol appear on the right hand side. I believe you are assuming that your "e" on the left hand side is going to leak across and through several function definitions to get to the e in the previous definitions. That doesn't appear to be happening.
From this description try writing a few other function definitions that do and do not use the same symbol name on both the left and right hand sides of a single function and see if you can begin to guess what kinds of function definition and parameter naming will work.