You are not doing anything wrong.
You have a process will all synchrnous activities. The engine will run one after the other in a cascade, that's why the events look out of order.
if you have a process like:
Start -> A -> B -> C - > D -> End
And all the activities are sync (A, B, C, D) the logs will print all the before* prints (before each activity) and as soon as it reaches the end the cascade will go back and print out all the afters*
If you add the node names to your listener you will that it make sense.
Cheers