This way implementers of the interface only need to create the async versions, and the extension methods provide the sync wrappers for free. Means less mocking and less boilerplate overall.