def each_remote_read
      return enum_for(:each_remote_read) unless block_given?
      begin
        loop do
          resp = remote_read
          break if resp.nil?  # the last response was received
          yield resp
        end
      ensure
        set_input_stream_done
      end
    end
def each_remote_read
      return enum_for(:each_remote_read) unless block_given?
      begin
        loop do
          resp = remote_read
          break if resp.nil?  # the last response was received
          yield resp
        end
      ensure
        set_input_stream_done
      end
    end
each_remote_read passes each response to the given block or returns an
 enumerator the responses if no block is given.
 Used to generate the request enumerable for
 server-side client-streaming RPC's.

 == Enumerator ==

 * #next blocks until the remote endpoint sends a READ or FINISHED
 * for each read, enumerator#next yields the response
 * on status
    * if it's is OK, enumerator#next raises StopException
    * if is not OK, enumerator#next raises RuntimeException

 == Block ==

 * if provided it is executed for each response
 * the call blocks until no more responses are provided

 @return [Enumerator] if no block was given