How do I prevent creating multiple instances of the same scene when reloading a scene?

public class Canvas_Control : MonoBehaviour
{

    private static Canvas_Control canvas_control_instance;

    void Awake()
    {
        DontDestroyOnLoad(this.gameObject);

        if (canvas_control_instance == null) {
            canvas_control_instance = this;
        } else {
            Destroy(gameObject);
        }
    }

    public void Retry() {
        print("retry pressed");
        print("Before: " + SceneManager.sceneCount);
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex, LoadSceneMode.Single);
        print("After load: " + SceneManager.sceneCount);
    } 

     // The above prints Before: 1 and After load: 2

    public void Next() {
        print("next pressed");
        // do stuff
    }

    // Now Next() will be called twice for each currently loaded scene, 
    // but I'd like it to be called only once.

}

This problem was solved after realizing that other scripts were adding multiple listeners to the same button.