Adding initial implementation of CancellablePromise