It is best practice to expose synchronous APIs, since Go has built-in tools for concurrency. Thus, the use of said API can decide if they want to synchronously wait or not. If you decide that for them, you’re taking away their agency.
More info in this Google talk: https://go.dev/talks/2013/bestpractices.slide#26