Actions like attack / roll / jump etc. are not called directly, instead they are called using InputBufferComponent.
It gives better control feeling over the character.
Let’s assume player is attacking and he wants to queue up next attack, he could wait till current attack ends, then press again attack input and it would work.
Now let’s analyze it with using InputBufferComponent
While player is attacking and in the middle of attack he presses attack button again, it will be stored in component and next attack will be performed immediately when previous ends.
Summarizing this component allows us plan next action while current one is still being processed.