remove Cancel() and setResult() from Promise to Future, so Future object can cancel itself.