add Testcase for cancel, timeout
modify promise function and etc
modify