code: @Implementation
    protected void prepareAsync() {
      checkStateException("prepareAsync()", preparableStates);
      state = PREPARING;
      MediaInfo info = getMediaInfo();
      if (info.preparationDelay >= 0) {
        postEventDelayed(preparedCallback, info.preparationDelay);
      }
    }
docs: Simulates {@link MediaPlayer#prepareAsync()}. Sets state to PREPARING and posts a callback to
  {@link #invokePreparedListener()} if the current preparation delay for the current media (see
  {@link #getMediaInfo()}) is &gt;= 0, otherwise the test suite is responsible for calling {@link
  #invokePreparedListener()} directly if required.
  
  @see MediaInfo#setPreparationDelay(int)
  @see #invokePreparedListener()