Hi Todd,
Sorry for the late reply.
You are right that Next will block until next event is coming out.
For your purpose, you may want to use AsyncNext with a deadline for a server with async service.
The deadline should be the next time point that you want to break out to do something else on the server.
Note grpc library needs to use the thread donated via Next or AsyncNext to do some background work and thus only AsyncNext infrequently with very short deadline may not be a good idea.
Also, regarding the single-threadedness, the current grpc implementation creates internal threads to do background work such as timer handling and others. As a result, you will not have a truly single-threaded server even if you only use one thread for the server.
This may not be the final form as we intended to support threading model fully controlled by the user. However, there is no timeline for those background threads to be removed at the moment.