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

Respective registries don't actually implement the channel behavior yet.
you could directly do: case <- time.After(timeout)