Sql Server doesn't start the stored procedure until the stream has completed (IEnumerator.MoveNext() == false). In cases where the full dataset may be too much for Sql Server to process at once. The client would prefer to call ExecuteXXX() each time the buffer flushes instead of buffering to the same stream. This should all work internally w/o any changes to the interface other than adding a new value to the SqlStreamBehavior enum.
NOTES:
- This option should be ignored by ExecuteReader and ExecuteScalar, or we can offer a callback for these so the client can handle what they want to do with each response.