title: asyncio how to pause coroutine until send is called
body: <p>Let's say that I have a bus that receives messages from somewhere. Every message has <code>target</code> and <code>msg</code>, and I want to implement a subscription mechanism, so other coroutines can <code>subscribe</code> to specific <code>target</code></p>
  <pre class="lang-python prettyprint-override"><code>subscriptions = {}
  async def subscribe(target):
      subscriptions[target]= wait_for_messages()
  
  async def proc_msg(target,msg);
      subscriptions[target].send(msg)
  
  async def wait_for_messages():
       while True:
          asyncio.sleep(1)
  
  async def subscribe(target)
      async for msg in subscribe(target):
        print(msg)
  </code></pre>
  <p>My question is regarding the <code>wait_for_messages</code>, even though sleep kind of works (the code is for presentation only), how can I await for the send command without sleeping and awaking constantly?</p>