Held inputs are dropped between sceneloads

Can someone please provide a workaround for the following problem:

using UnityEngine;
using UnityEngine.SceneManagement;

public class InputPresser : MonoBehaviour
{
	void Update()
	{
		if (Input.GetKeyDown(KeyCode.R))
			SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);

		if (Input.GetKey(KeyCode.RightArrow))
			Debug.Log("holding right");

		//Hold down the right arrow and then press R and then P
		if (Input.GetKeyDown(KeyCode.P) && !Input.GetKey(KeyCode.RightArrow))
		{
			//Expected behavior: the held input prior to sceneload is read correctly
			//Observed behavior: the held input is not read
			Debug.Break();
		}
	}
}

To capture inputs during a scene load, you must load the new scene asynchronously. Create a boot scene (that’s always running) to capture/cache inputs during the load, then act on them accordingly when it’s done.