Whether a method is implemented using
async/awaitor not is an
implementation detail. How the method should behave is a contract
detail, which should be specified in the normal way.Note that if you make the method return a
Taskor aTask<T>, it’s more
obvious that it’s meant to be asynchronous, and will probably be hard
to implement without being asynchronous.
From https://stackoverflow.com/a/6274601/4384