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.
go channel.Send(context, clientID, "Hello")
go channel.Send(context, clientID, "World")
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.
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.