--[=[
	Disconnects a connection, any `:Fire` calls from now on will not
	invoke this connection's handler.

	```lua
	local connection = ScriptSignal:Connect(function() end)

	connection.Connected -> true
	connection:Disconnect()
	connection.Connected -> false
	```

	@ignore
]=]

function ScriptConnection:Disconnect()
    if self.Connected ~= true then
        return
    end

    self.Connected = false

    local _node: ScriptConnectionNode = self._node
    local _prev = _node._prev
    local _next = _node._next

    if _next ~= nil then
        _next._prev = _prev
    end

    if _prev ~= nil then
        _prev._next = _next
    else
        -- _node == _signal._head

        _node._signal._head = _next
    end

    _node._connection = nil
    self._node = nil
end
ScriptConnection.Destroy = ScriptConnection.Disconnect

return ScriptSignal
