Wait for a future, shielding it from cancellation.
$(D_CODE res = shield(something());)
is exactly equivalent to the statement
$(D_CODE res = something();)
except that if the coroutine containing it is cancelled, the task running in $(D_PSYMBOL something()) is not cancelled. From the point of view of $(D_PSYMBOL something()), the cancellation did not happen. But its caller is still cancelled, so the call still raises $(D_PSYMBOL CancelledException). Note: If $(D_PSYMBOL something()) is cancelled by other means this will still cancel $(D_PSYMBOL shield()).
If you want to completely ignore cancellation (not recommended) you can combine $(D_PSYMBOL shield()) with a try/catch clause, as follows:
$(D_CODE try res = shield(something()); catch (CancelledException) res = null; )