Task.async return message

Yes, it’s quite clear in the doc I’d say. See https://hexdocs.pm/elixir/Task.html:

Tasks spawned with async can be awaited on by their caller process (and only their caller) as shown in the example above. They are implemented by spawning a process that sends a message to the caller once the given computation is performed.

And, so Task.await is used to read the message sent by the task.