async state update