Move async API to a separate pluggable trait