The code after WaitForSeconds is not working

Hello everyone. I’m making a runner game, so I need a powerup that makes you jump higher for 3 seconds. I’ve made a sprite with a box collider trigger that starts the DoubleJump coroutine.
There’s the code of the script that’s attached to the sprite:

    private void OnTriggerEnter(Collider other)
	{
		Destroy(GetComponent<Transform>().gameObject);
		if (other.CompareTag("Player")) {
			StartCoroutine(DoubleJump(other));
		}
	}

	IEnumerator DoubleJump(Collider other)
	{
		var obj = other.GetComponent<RigidbodyFirstPersonController>().movementSettings;
		obj.JumpForce *= 2;
		Debug.Log("before return");
		yield return new WaitForSeconds(1);
		Debug.Log("after return");
		obj.JumpForce /= 2;
	}

After colliding with the sprite it disappears, jump force is doubling, “before return” shows in a log but nothing really happens after that, so the code after “yield return new WaitForSeconds(1);” is not evaluating. Can you please tell me why and fix the problem? Thank you.

Make the RigidbodyFirstPersonController run the coroutine instead of the power up :

if (other.CompareTag("Player")) {
     other.GetComponent<RigidbodyFirstPersonController>().StartCoroutine(DoubleJump(other));
 }