title: Thread safety / atomicity of App Engine Channel API
body: <p>What happens when I try to send a message with Google App Engine's Channel API but from two or more goroutines and/or task queues? e.g.</p>
  
  <pre><code>go channel.Send(context, clientID, "Hello")
  go channel.Send(context, clientID, "World")
  </code></pre>
  
  <p>I understand that in GAE Go, all goroutines are multiplexed onto a single thread. However this still allows for pre-emption during I/O, and presumably channel sends qualify as I/O.</p>
  
  <p>The GAE dev server seems to serialize all requests so I don't see any channel sends overlapping. The production server seems to allow some request concurrency but the channel sends appear atomic or at least safe to call from different threads/goroutines.</p>