El objeto de audio HTML5 no se reproduce en el iPad (cuando se llama desde un setTimeout)

Tengo una página con un oculto<audio> objeto que se está iniciando y se detiene mediante un botón personalizado a través de javascript. (La razón es que quiero personalizar el botón, y que dibujar un reproductor de audio parece destruir el rendimiento de renderizado en el iPad de todos modos). Un ejemplo simplificado (en coffeescript):

// Works fine on all browsers

constructor: (@_button, @_audio) ->
  @_button.on 'click', @_play          // Bind button's click event with jQuery

_play: (e) =>
  @_audio[0].play()                    // Call play() on audio element

El audio se reproduce bien cuando se dispara desde una función vinculada a unclick evento, pero en realidad quiero que se complete una animación antes de que se reproduzca el archivo, así que puse.play() dentro de unasetTimeout. Sin embargo, simplemente no puedo hacer que esto funcione:

// Will not play on iPad

constructor: (@_button, @_audio) ->
  @_button.on 'click', @_play          // Bind button's click event with jQuery

_play: (e) =>
  setTimeout (=>                       // Declare a 300ms timeout
    @_audio[0].play()                  // Call play() on audio element
  ), 300

He comprobado que@_audio (this._audio) está en alcance y que suplay() El método existe. ¿Por qué no funciona esto en iPad?

Editar: Como sucede, el caso de prueba simplificado anterior en realidadhace trabajo. Vea la respuesta de @apsillers a continuación y mis comentarios al respecto.

Respuestas a la pregunta(3)

Su respuesta a la pregunta