Pattern for writing synchronous and asynchronous methods in libraries and keeping it DRY
Using async await when implementing a library with both synchronous and asynchronous API for the same functionality