setActive(false) does not fire onDisable?

If I use setActive(true) on a gameObject unity will call: onEnable. But when I am using setActive(false) on the same gameObject Unity would not call onDisable.
The reference says that onEnable is called when the OBJECT becomes enabled and active.
OnDisable is called when the BEHAVIOUR becomes disabled () or inactive.
Is there any other callback that is called when setActive(false) on a gameObject is used?

I can’t really reproduce your result. Are you sure you have your method called “OnDisable” (note: capital first letter!)?

This C# snippet works as expected:

    void OnDisable()
    void OnGUI()
        if (GUILayout.Button("turn off"))
            Debug.Log("Going to disable this GO");
            Debug.Log("Disabling completed");

I got the 3 logs in this order:

    Going to disable this GO
    Disabling completed

Are you sure the script was enabled and the GO is active then you call SetActive(false) ?

ps: no, there’s no other callback beside OnDisable