   Starts a task.
 
   This is only used when the task is used for side-effects
-  (i.e. no interest in its return result) and it should not
+  (i.e. no interest in the returned result) and it should not
   be linked to the current process.
   """
   @spec start(fun) :: {:ok, pid}

  to the caller once the given computation is performed.

  Besides `async/1` and `await/2`, tasks can also be
  started as part of supervision trees and dynamically spawned
  in remote nodes. We will explore all three scenarios next.

  ## async and await

  One of the common uses of tasks is to convert some sequential code
  into concurrent one with `Task.async/1` while keeping its semantics.
  When invoked, a new process will be created, linked and monitored
  by the caller. Once the task action finishes, a message will be sent

  Returns `{:ok, reply}` if the reply is received while shutting down the task,
  `{:exit, reason}` if the task exited abornormally, otherwise `nil`.

  The shutdown method is either a timeout or `:brutal_kill`. In case
  of a `timeout`, a `:shutdown` exit signal is sent to the task process
  and if it does not exit within the timeout it is killed. With `:brutal_kill`
  the task is killed straight away. In case the task exits abnormally, or a 
  timeout shutdown kills the task, this function will exit with the same reason.

  It is not required to call this function when terminating the caller, unless
  exiting with reason `:normal` or the task is trapping exits. If the caller is
