improve the async event control