title: Shiny observeEvent triggers on app launch
body: <p>I have an app with <code>observeEvent</code>that triggers when the app starts, it doesn't wait for the button to be clicked. In this example it doesn't appear to have a difference but in my real app it causes the busyIndicator to show twice on the initial load.</p>
  
  <pre><code>name&lt;-sample(c('a','b','c'),replace=T,5)
  LAT&lt;-runif(5,min=-26, max=-22)
  LONG&lt;-runif(5,min=-54, max=-48)
  data&lt;-data.frame(name,LAT,LONG)
  
  ui &lt;- shinyUI(fluidPage(
    selectInput('muni',label='Select city',
                choices=c('Show all',sort(levels(data$name)),selected=NULL)),
    htmlOutput('box'),
    leafletOutput('map')
    ))
  
  server &lt;- function (input, output, session) {
  
  data1&lt;-reactive({
         if (input$muni!='Show all') {
             data&lt;-data[which(data$name==input$muni),]
             }
         return(data)
  })
  
  output$box &lt;- renderUI({
  
  data&lt;-data1()
  num&lt;-as.integer(nrow(data))
  
  lapply(1:num, function(i) {
         bt &lt;- paste0('go_btn',i)
         fluidRow(
                  HTML(paste0('&lt;div style="border: 1px solid #00000026; 
                  border-radius: 10px; padding: 10px;"&gt;
                  &lt;span style="font-size:14px font-weight:bold;"&gt;',
                  data$name[i],' - areas: a1, a2, a3&lt;/span&gt;&lt;/br&gt;',
                  actionButton(bt,'See map',icon=icon('map-marker',lib='font-awesome')),
                  HTML('&lt;/div&gt;&lt;/br&gt;')
                  )))
         })
      })
  
  output$map&lt;-renderLeaflet({
  
  data&lt;-data1()
  rownames(data)&lt;-seq(1:nrow(data))
  
  leaflet(data) %&gt;%
    addProviderTiles("Esri.WorldTopoMap") %&gt;% 
    setView(-51.5,-24.8,zoom=7) %&gt;% 
    addMarkers(lng=~data$LONG,lat=~data$LAT)
  
  })
  
  lapply(1:nrow(data), function(i) {
         observeEvent(input[[paste0('go_btn',i)]], {
                      data&lt;-data1()
                      rownames(data)&lt;-seq(1:nrow(data))
  
                      leafletProxy('map',data=data,session=session) %&gt;%
                                   clearMarkers() %&gt;%
                                   setView(data$LONG[i],data$LAT[i],zoom=15) %&gt;%
                                   addMarkers(lng=data$LONG[i],lat=data$LAT[i])
          },ignoreInit = T)
       })
     }
  
    shinyApp(ui, server)
  </code></pre>
  
  <p>Using <code>options(shiny.trace = TRUE)</code> I see that the process runs twice:
  SEND {"busy":"busy"} SEND {"busy":"idle"}.
  Can anyone tell me why my app is having this behavior? </p>