I'm going through django channels tutorial and I'm baffled by the async_to_sync syntax in the asgiref.sync module
Specifically
async_to_sync(self.channel_layer.group_add)(
self.room_group_name,
self.channel_name
)
It says async_to_sync is a wrapper, which seems to be an interchangeable term with decorator (please correct me if this is not the case) but I'm unable to find any documentation where decorators have the syntax of
func_one(func_two)(args)
What's the flow of this line? is func_one or func_two called first? And how are the return values passed around?