Add maybe_async_return() function to handle certain sync/async juggling more formally. (@Hodgestar)