Async world creation and loading

I’ve seen a thread about this before but it involved NMS and forge and I am trying to do this with support for SpongeVanilla. The current way I have done this is

WorldCreationSettings.Builder builder = WorldCreationSettings.builder().name(name);
WorldCreationSettings settings = builder.enabled(true).keepsSpawnLoaded(true).loadsOnStartup(true).build();
final Optional<WorldProperties> optionalProperties = Sponge.getGame().getServer().createWorldProperties(settings);
WorldProperties properties = optionalProperties.get();
Sponge.getServer().saveWorldProperties(properties);
Sponge.getServer().loadWorld(name);

Now I dont know if this is the correct way to do this but it has seemed to work with the exception of the amount of lag it produces. Usually on creation the server runs about 10000+ms behind. Now since minecraft is single threaded i dont know if this exactly is possible and I read something about how builders do async tasks, but I hope i can find a better way so i can avoid this amount of lag.

While worlds must be created and loaded on the main thread, you can use WorldCreationSettings#doesGenerateSpawnOnLoad to prevent spawn chunks from being generated and loaded immediately. In my experience, this allows world loading to occur almost instantly, leaving your plugin free to load individual chunks whenever you desire.