Use async video interface instead of duplicating async logic