Can not play a disabled audio source? But audio plays when set to "Play On Awake"

I have a GameObject with an AudioSource attached and in a script on the same object I’m calling the following simple code:

void PlayAudio()
	{
		audio.enabled = true;
		if (!audio.isPlaying)
		{
			audio.Play();
		}
	}

Oddly I get the warning Can not play a disabled audio source and audio does not play. I’ve stepped through the code and audio is very clearly enabled.

I have noticed however that audio does play if I select “Play On Awake” in the Audio Source settings, though when the audio plays I still get the same Can not play a disabled audio source warning.

There’s a few questions about this error on this site, but most are due to someone destroying objects holding Audio Sources. This is not the case in my scene and no GameObjects are being destroyed anywhere.

Is there anything special I need to do to setup a Audio Source that I may not be doing? Why would audio only play if I’ve selected “Play on Awake?”

Answering my own question because I figured out what was going wrong.

This error can occur if you’re calling audio.Play() before Awake() has been called.

I’ve seen many variants of this case but still can´t figure out what could be wrong on my code…

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(AudioSource))]
public class DestroyByContact : MonoBehaviour {

	public AudioClip deathSound;
	private AudioSource audio;


	void Awake()
	{
	audio = GetComponent<AudioSource>();
	audio.clip = deathSound;
	}

    void OnTriggerEnter(Collider other)
    {
         Instantiate(explosion, transform.position, transform.rotation);
	     if (other.gameObject.tag == "Player") {
	          audio.enabled = true; // I put this just in case.
              audio.Play(); // doesn't tell me that AudioSource is enabled anymore because of the previous line, but still does not play.
	          Destroy (gameObject);
              }
      }
}