[refactor] Async by default, but sync calls for done/next