Part #1 of synchronous requests: Add channels and a mechanism for waiting

Respective registries don't actually implement the channel behavior yet.
inside this goroutine: defer util.HandleCrash()