Use promises to handle animation flow.