Async.fromCompletableFuture has a cancel operation that completes after calling cancel on the underlying CompletableFuture, but if the cancelation fails then CompletableFuture.cancel will immediately return false - fiber cancelation in this case should block until the future completes.