Using a timer seems like a hacky solution to me - e.g., if you have a time-slowing mechanic in your game, the timer would need to be kept in sync with the montage.
instead, it’s better to use the UAnimInstance::Montage_SetEndDelegate(FOnMontageEnded& InOnMontageEnded, UAnimMontage* Montage), so you can set up a callback for when your montage ends. If you search the Engine project for usages of it, you can find some examples (the best one I found was in UPlayMontageCallbackProxy::PlayMontage).