'Asynchronously deletes a Task or list of Tasks in this Queue, by name.
This function is identical to delete_tasks_by_name() except that it returns
an asynchronous object. You can call get_result() on the return value to
block on the call.
Args:
task_name: A string corresponding to a task name, or an iterable of
strings corresponding to task names.
rpc: An optional UserRPC object.
Returns:
A UserRPC object, call get_result to complete the RPC and obtain the
result.
If an iterable (other than string) is provided as input, the result will
be a list of of Task objects, one for each task name in the order
requested. The Task.was_deleted property will be True for each task
deleted by this call, and will be False for unknown and tombstoned tasks.
Otherwise, if a single string was provided as input, then the result will
be a single Task object.
Raises:
DuplicateTaskNameError: if a Task name is repeated in the request.'

def delete_tasks_by_name_async(self, task_name, rpc=None):

    if isinstance(task_name, str):
        return self.delete_tasks_async(Task(name=task_name), rpc)
    else:
        tasks = [Task(name=name) for name in task_name]
        return self.delete_tasks_async(tasks, rpc)
