The data model does not stipulate when something is asynchronous or not. In theory, every non-GET operation can result in a task. It's up to the designer of the implementation to determine when it's appropriate to spawn a task for a given operation. I can certainly see a task being needed for this type of action given how long the end-to-end operation can take.
In terms of the response payload, you do not include the action response in the task itself. When a client performs an operation that spawns a task, the client will get back a task monitor URI in the Location response header. The client polls this URI with GET operations until the task is complete. While the task is still being processed, the response from the GET on the task monitor URI will be the task resource. However, once the task is complete, the GET operation on the task monitor URI will respond with the result of the operation as if a task was never produced.
Keep in mind, there is a distinction between a "task resource" and a "task monitor". A task resource is the data model representation of a long running operation, and an administrator can discover these instances in the task collection. A task monitor is a special handle the client invoking the operation receives in order to get the final results of the operation.
For step 2, the client would be performing a GET on the task monitor URI (not the task resource). The Location header in the response for step 1 will contain this URI (the @odata.id property in the body of the response contains the resource URI and not the monitor URI).
For step 3, the response body (assuming the client is performing a GET on the task monitor URI) would be the response shown in step 4.
In the task resource, the "HttpHeaders" property reflects the HTTP headers in the original request that initiated the operation. It will not contain any response information. I think the descriptions need a bit of work since it's not very clear that was the intent.
If you can make that type of determination in the service for when to spawn a task or not, you're certainly allowed to do what you're showing. I've typically not seen that though, but that's generally because it's usually a hard thing for a service to determine. Clients are supposed to prepare for either type of outcome.