Widget not removing from parent

Its bad practice to put so many instructions on one same line. read about Custom events. also, take note that because its in a same line, it doesnt mean it will execute from start to end. as far as i understand (and suppose) delays are instructions that stay in memory while the frames refresh, each time a frame refresh it checks on the object, when the timer is done, it should check back and continue the logic (at least thats how i think this works). so in case, im even surprised its actually creating the widget because you called a “Destroy Actor” before everything else. that means that after the 2s delay, the engine will check on the object and see theres nothing, so it doesnt knows what was coming after the delay.

I suggest you to read and see basic tutorials first, there is a good one about blueprint communication, i think its basic to know that. without changing much, cause the logic should be reworked, this is the solution to your problem.