title: How can I run "fire and forget" tasks from a controller without test warnings?
body: <p>In my Phoenix app, I have a module function like <code>Reviews.create(attributes)</code>. It does some work immediately, and starts a task (using <code>Task.async</code>) to do additional work.</p>
  
  <p>I can test it like this:</p>
  
  <pre><code>{:ok, new_review, task} = Reviews.create(attrs)
  # verify that new_review is correct
  Task.await(task)
  # verify that the task did what it should
  </code></pre>
  
  <p>However, the main place I want to use <code>Reviews.create/1</code> is from a controller. From there, I want to treat the task as "fire and forget". This is simple: I just don't call <code>Task.await</code>.</p>
  
  <p>This works fine, except that when I test the controller, I get errors like:</p>
  
  <pre><code>[error] Postgrex.Protocol (#PID&lt;0.344.0&gt;) disconnected: ** 
  (DBConnection.ConnectionError) owner #PID&lt;0.753.0&gt; exited
  while client #PID&lt;0.755.0&gt; is still running with: shutdown
  </code></pre>
  
  <p>In other words, it's telling me that the task got killed when the controller test ended. Which I don't care about.</p>
  
  <p>Is there some way to make this more explicitly "fire and forget"? Eg, it would be nice if, from the controller, I could call <code>Task.forget_about(task)</code>, but that doesn't exist.</p>