I think we should actually have a more clearly stated policy for this. We can argue over exactly what the policy is, but when I mark something as "pending deprecation" that almost always means it will be marked "deprecated" in the next feature release unless some case comes up that convinces me to not deprecate that code after all.  Once a piece of code is marked "deprecated" (fully), backwards compatibility for it can be expected for two feature releases with increasingly loud notification of the deprecation in the release notes for those releases.  Finally they may be removed entirely.