Consider the following example:
Start the build, let it go into "sleep" and abort the build. The result will be:
The result is having both `post-aborted` and `post-failure` executed. What should have happened was to receive only `post-aborted` step.
I've also seen in the logs `post-unstable` and `post-failure`, but I am not sure how to provide a way to reproduce this. I'm not sure how that happened but I have seen it a few times on some of our builds.