in src/introspection.c [230:255]
case DISPATCH_CONTINUATION_TYPE(ASYNC_REDIRECT):
DISPATCH_INTERNAL_CRASH(0, "Handled by the caller");
case DISPATCH_CONTINUATION_TYPE(MACH_ASYNC_REPLY):
break;
case DISPATCH_CONTINUATION_TYPE(MACH_SEND_BARRRIER_DRAIN):
break;
case DISPATCH_CONTINUATION_TYPE(MACH_SEND_BARRIER):
case DISPATCH_CONTINUATION_TYPE(MACH_RECV_BARRIER):
flags = (uintptr_t)dc->dc_data;
dq = dq->do_targetq;
break;
case DISPATCH_CONTINUATION_TYPE(MACH_IPC_HANDOFF):
flags = (uintptr_t)dc->dc_data;
break;
default:
DISPATCH_INTERNAL_CRASH(dc->do_vtable, "Unknown dc vtable type");
}
} else if (flags & (DC_FLAG_SYNC_WAITER | DC_FLAG_ASYNC_AND_WAIT)) {
dispatch_sync_context_t dsc = (dispatch_sync_context_t)dc;
waiter = pthread_from_mach_thread_np(dsc->dsc_waiter);
ctxt = dsc->dsc_ctxt;
func = dsc->dsc_func;
} else if (func == _dispatch_apply_invoke ||
func == _dispatch_apply_redirect_invoke) {
dispatch_apply_t da = ctxt;
if (da->da_todo) {