title: forcing initial callback despite dash.PreventUpdate preventing it from other function
body: <p>When a dash app is started, all callbacks should be fired according to the <a href="https://dash.plotly.com/advanced-callbacks" rel="nofollow noreferrer">dash documentation</a>. But when callbacks are linked (ones output is the other ones input) the initial callback of the latter is prevented when the first raises a dash.exceptions.PreventUpdate or returns a dash.no_update.
  Although I can somehow follow that logic, it was not clear for me that this would happen, <strong>and I am interested in reading somewhere the reasons behind this</strong>, although I have no idea where.</p>
  <p>More practical, I would like to fire the initial callback nevertheless, is this possible? The code below is a minimal example of the problem:</p>
  <pre><code>import dash
  import dash_core_components as dcc
  import dash_html_components as html
  from dash.dependencies import Input, Output, State
  import plotly.graph_objects as go
  import numpy as np
  from time import sleep
  
  app = dash.Dash(__name__)
  app.layout = html.Div([
          html.Button('test', id='button'),
          dcc.Dropdown(id='super', options=[{'label':x, 'value':x} for x in ['test1', 'test2']]),
          dcc.Dropdown(id='under', options=[{'label':x, 'value':x} for x in ['under1', 'under2']]),
          dcc.Graph(id='graph'),
  ])
  
  @app.callback(
          Output('super', 'value'),
          Input('button', 'n_clicks'),
          prevent_initiall_call=True
  )
  def set_super_value(nclicks):
      if nclicks is None:
          return dash.no_update
      return 'test2'
  
  @app.callback(
          Output('under', 'value'),
          Input('super', 'value')
  )
  def set_under_value(val):
      sleep(5)
      return 'under1'
      
  @app.callback(
          Output('graph', 'figure'),
          Input('under', 'value'),
  )
  def make_figure(val):
      sleep(5)
      if val == 'under1':
          return go.Figure(go.Scatter(x=np.arange(0,1000), y=np.sin(np.arange(0,1000)/100)))
      else:
          return go.Figure(go.Scatter(x=np.arange(0,1000), y=np.cos(np.arange(0,1000)/100)))    
  
  if __name__ == '__main__':
      app.run_server(debug=True)
  </code></pre>
  <p>This is the initial state:
  <a href="https://i.stack.imgur.com/SAQbP.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/SAQbP.png" alt="enter image description here" /></a>
  And this is how I would like it to be:
  <a href="https://i.stack.imgur.com/xDKAX.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/xDKAX.png" alt="enter image description here" /></a></p>
  <p>In this simple example I can always set this initial value as the 'value' option in the initial app.layout variable, but the problem in my actual application makes this a suboptimal solution in my eyes.</p>
  <p>* Edits made to the code to make specify the problem a little more specific. Code still works and screenshots still apply (but</p>