title: Why do GraphQL Subscriptions use an AsyncIterator?
body: <p><code>AsyncIterator</code> requires pulling data using <code>.next()</code>. But with websockets I generally want to push data when events occur. Only thing I can think of is that by using pull-based they can rate-limit.</p>
  
  <p>So what is calling <code>.next()</code>? Is it a timer, or does it listen to a publish message, queue that, then call <code>.next()</code> until it consumes all the queue?</p>
  
  <p>Is this suitable for real-time data, like GPS positions on a map?</p>
  
  <p>Looked here and still could not figure it out: <a href="https://github.com/facebook/graphql/blob/master/rfcs/Subscriptions.md" rel="nofollow noreferrer">https://github.com/facebook/graphql/blob/master/rfcs/Subscriptions.md</a></p>
  
  <p>GraphQL Subscriptions repo from Apollo: <a href="https://github.com/apollographql/graphql-subscriptions" rel="nofollow noreferrer">https://github.com/apollographql/graphql-subscriptions</a></p>