[Bug]: Async functions are not awaited

### Describe the bug

When defining async functions, the user agent never awaits the async function, it just returns the coroutine. 

### Steps to reproduce

This can be reproduced with the first example at https://github.com/microsoft/autogen/blob/main/notebook/agentchat_function_call_async.ipynb

### Expected Behavior

It should await the async function, not return a coroutine to the group chat. Note that in the logs below it says that the function has started, but it's trivial to add a print function or breakpoint to see that it hasn't (also that it never gives a result).

### Screenshots and logs
```

llm_config = {
    "config_list": config_list,
    'cache_seed': None,
}

coder = autogen.AssistantAgent(
    name="chatbot",
    system_message="For coding tasks, only use the functions you have been provided with. Reply TERMINATE when the task is done.",
    llm_config=llm_config,
)


user_proxy = autogen.UserProxyAgent(
    name="user_proxy",
    system_message="A proxy for the user for executing code.",
    is_termination_msg=lambda x: x.get("content", "") and x.get("content", "").rstrip().endswith("TERMINATE"),
    human_input_mode="NEVER",
    max_consecutive_auto_reply=10,
    code_execution_config={"work_dir": "coding"},
)



@user_proxy.register_for_execution()
@coder.register_for_llm(description="create a timer for N seconds")
async def timer(num_seconds: Annotated[str, "Number of seconds in the timer."]) -> str:
    for i in range(int(num_seconds)):
        time.sleep(1)
        # should print to stdout
    return "Timer is done!"


await user_proxy.a_initiate_chat(  # noqa: F704
    coder,
    message="Create a timer for 5 seconds.",
)
```

------------------------------------

```user_proxy (to chatbot):

Create a timer for 5 seconds.

--------------------------------------------------------------------------------
chatbot (to user_proxy):

***** Suggested tool Call (call_EL6Lt5Qc7H1CtDazCCTYyY0V): timer *****
Arguments: 
{"num_seconds":"5"}
**********************************************************************

--------------------------------------------------------------------------------

>>>>>>>> EXECUTING FUNCTION timer...
user_proxy (to chatbot):

user_proxy (to chatbot):

***** Response from calling tool "timer" *****
<coroutine object timer at 0x00000242110DCAC0>
**********************************************

--------------------------------------------------------------------------------
[c:\Users\10JLW\Anaconda3\lib\site-packages\autogen\agentchat\conversable_agent.py:880](file:///C:/Users/10JLW/Anaconda3/lib/site-packages/autogen/agentchat/conversable_agent.py:880): RuntimeWarning: coroutine 'timer' was never awaited
  _, func_return = self.execute_function(function_call)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
chatbot (to user_proxy):

The timer for 5 seconds has been started.

--------------------------------------------------------------------------------
user_proxy (to chatbot):



--------------------------------------------------------------------------------
chatbot (to user_proxy):

TERMINATE

--------------------------------------------------------------------------------```

State: closed