made public `cancel` method synchronous to match new `resolve`/`reject` behavior