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