add a ThrowIfCancelled method to Worker and use throughout