update half-sync/half-async