title: Why does tokio::spawn have a delay when called next to crossbeam_channel::select?
body: <p>I'm creating a task which will spawn other tasks. Some of them will take some time, so they cannot be awaited, but they can run in parallel:</p>
  <p><em>src/main.rs</em></p>
  <pre class="lang-rust prettyprint-override"><code>use crossbeam::crossbeam_channel::{bounded, select};
  
  #[tokio::main]
  async fn main() {
      let (s, r) = bounded::&lt;usize&gt;(1);
  
      tokio::spawn(async move {
          let mut counter = 0;
          loop {
              let loop_id = counter.clone();
              tokio::spawn(async move { // why this one was not fired?
                  println!(&quot;inner task {}&quot;, loop_id);
              }); // .await.unwrap(); - solves issue, but this is long task which cannot be awaited
              println!(&quot;loop {}&quot;, loop_id);
              select! {
                  recv(r) -&gt; rr =&gt; {
                      // match rr {
                      //     Ok(ee) =&gt; {
                      //         println!(&quot;received from channel {}&quot;, loop_id);
                      //         tokio::spawn(async move {
                      //             println!(&quot;received from channel task {}&quot;, loop_id);
                      //         });
                      //     },
                      //     Err(e) =&gt; println!(&quot;{}&quot;, e),
                      // };
                  },
                  // more recv(some_channel) -&gt; 
              }
              counter = counter + 1;
          }
      });
  
      // let s_clone = s.clone();
      // tokio::spawn(async move {
      //     s_clone.send(2).unwrap();
      // });
  
      loop {
          // rest of the program
      }
  }
  </code></pre>
  <p>I've noticed strange behavior. This outputs:</p>
  <pre class="lang-none prettyprint-override"><code>loop 0
  </code></pre>
  <p>I was expecting it to also output <code>inner task 0</code>.</p>
  <p>If I send a value to channel, the output will be:</p>
  <pre class="lang-none prettyprint-override"><code>loop 0
  inner task 0
  loop 1
  </code></pre>
  <p>This is missing <code>inner task 1</code>.</p>
  <p>Why is <code>inner task</code> spawned with one loop of delay?</p>
  <p>The first time I noticed such behavior with 'received from channel task' delayed one loop, but when I reduced code to prepare sample this started to happen with 'inner task'. It might be worth mentioning that if I write second <code>tokio::spawn</code> right to another, only the last one will have this issue. Is there something I should be aware when calling <code>tokio::spawn</code> and <code>select!</code>? What causes this one loop of delay?</p>
  <p><em>Cargo.toml dependencies</em></p>
  <pre><code>[dependencies]
  tokio = { version = &quot;0.2&quot;, features = [&quot;full&quot;] }
  crossbeam = &quot;0.7&quot;
  </code></pre>
  <p><em>Rust 1.46, Windows 10</em></p>