In an ideal world every abstraction is pure. We don’t live in an ideal world (yet) though. Abstractions can be hard. They can cause frustration and people to give up on them or wait for the perfect solution.
In my experience, often the right thing to do is wait for the perfect abstraction but I think in a lot of cases it is right to go ahead and do the abstraction. You can always replace it or refactor it if need be but I think the key is not over doing it if not sure – keep it simple.
You want a good return on your investment and you dont want to make a brittle abstraction which limits peoples options down the line or causes tears and frustration.
Also, as with everything you should talk to people and get advice before creating your monster.