change to SetTimeOut 0 for async