in some cases calling cancel multiple times could potentially fulfill the promise multiple times
no tests here
parens imply side effect