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))

		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

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.