I have a boomerang type projectile that flies a max distance before returning. I want the process to take a similar amount of time no matter how far the projectile is thrown. Here is the code where the boomerang object is immediately in motion as soon as it is instantiated.

class_name WeaponThrow extends Node2D

enum State {
	INACTIVE,
	THROW,
	RETURN
}

var player : Player
var direction: Vector2
var speed: float 
var state
var destroy
var distance : int = 250
var throwLocation

@export var acceleration: float = 400.0
@export var max_speed: float = 400.0

func _ready() -> void:
	visible = false
	state = State.INACTIVE
	player = PlayerManager.player

func _physics_process(delta: float) -> void:
	if state == State.INACTIVE:
		var mousePos = get_global_mouse_position() #direction of dash
		var rotationF = atan2(mousePos.y-position.y,mousePos.x-position.x) #rotation of line between player and mouse
		throwLocation = Vector2(distance*cos(rotationF)+position.x,distance*sin(rotationF)+position.y) #calculation of the point to where should be dashed
		if position.distance_to(mousePos) < distance:
			throwLocation = mousePos
		state = State.THROW
	if state == State.THROW:
		rotation += .3
		speed -= acceleration * delta
		position = position.move_toward(throwLocation, speed * delta)
		if position.distance_to(throwLocation) <= 10 or speed <= 0:
			state = State.RETURN
	elif state == State.RETURN:
		rotation += .3
		speed += acceleration * delta
		position = position.move_toward(player.position, speed * delta)
		if position.distance_to(player.position) <= 10 or speed <= 0:
			queue_free()

func throw( throw_direction : Vector2) -> void:
	direction = throw_direction
	speed = max_speed
	visible = true

func _on_visible_on_screen_notifier_2d_screen_exited() -> void:
	destroy = true
	await get_tree().create_timer(2).timeout
	if destroy:
		queue_free()


func _on_visible_on_screen_notifier_2d_screen_entered() -> void:
	destroy = false

Here is the current behavior:

Demo

You can either change the initial speed or the acceleration dependent on distance.
Here's a formula:
throw_speed = sqrt(distance * 2 * acceleration)