we should use the async version of this API.