Any type of wait() makes this function stop

  1. What do you want to achieve?
    Im trying box that everytime that the BGM changes it will say the name of the music and who created + the thumbnail of the song

  2. What is the issue?
    when I try to make script wait at any part of the fuction, the functions stops working complety and does give any type of error

  3. What solutions have you tried so far?
    I already tried using task.delay and task.wait and I tryed puting the function on separeted script but it do anything + I tried calling the tweenservice from the local script insted of from a module script

 -- Services

local ReplicatedStorage = game:GetService("ReplicatedStorage")

-- Varaiveis

local MainFrame = script.Parent.Parent.MainFrame
local Remotes = ReplicatedStorage.Remotes
local GeneralServices = require(ReplicatedStorage.Modules.GeneralServices)

-- Script

local Music = MainFrame.Music
Remotes.MusicChange.OnClientEvent:Connect(function(Name, From, Id)
	Music.Visible = true
	Music.Position = UDim2.new(-0.5, 0, 0.65, 0)
	Music.ImageLabel.Image = Id
	Music.Upbar.TextLabel.Text = "BMG - '"..Name.."'"  
	Music.Secondbar.TextLabel.Text = "By: '".. From .."'"

	GeneralServices.TweenObj(Music, 1.6, "Linear", "Out", {Position = UDim2.new(0, 0, 0.65, 0)})
	wait(4) -- The script stops here
	GeneralServices.TweenObj(Music, 1.6, "Linear", "Out", {Position = UDim2.new(-0.5, 0, 0.65, 0)})
	wait(2)
	Music.Visible = false
end)

edit: Fixing grammar (I not a native english speaker soo sorry for any grammar errors)