 
   In other words, **do not**:
 
-      Task.start_link fn ->
+      Task.start_link(fn ->
         do_something()
         ...
-      end
+      end)
 
       # Wait until work is done
       Process.sleep(2000)

  Instead **do**:

      {:ok, pid} =
        Task.start_link fn ->
          ...
        end

      ref = Process.monitor(pid)
      receive do
        {:DOWN, ^ref, _, _, _} -> :task_is_down
      after
        30_000 -> :timeout # Optional timeout
      end

  """

  Similarly, if you are waiting for a process to terminate,
  monitor that process instead of sleeping. **Do not**:

      Task.start_link(fn ->
        ...
      end)

      # Wait until task terminates
      Process.sleep(2000)
