|  | @@ -256,48 +256,45 @@ namespace Grpc.IntegrationTesting
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  var call = client.FullDuplexCall();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                StreamingOutputCallResponse response;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |                  await call.RequestStream.Write(StreamingOutputCallRequest.CreateBuilder()
 | 
	
		
			
				|  |  |                  .SetResponseType(PayloadType.COMPRESSABLE)
 | 
	
		
			
				|  |  |                  .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(31415))
 | 
	
		
			
				|  |  |                  .SetPayload(CreateZerosPayload(27182)).Build());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                response = await call.ResponseStream.ReadNext();
 | 
	
		
			
				|  |  | -                Assert.AreEqual(PayloadType.COMPRESSABLE, response.Payload.Type);
 | 
	
		
			
				|  |  | -                Assert.AreEqual(31415, response.Payload.Body.Length);
 | 
	
		
			
				|  |  | +                Assert.IsTrue(await call.ResponseStream.MoveNext());
 | 
	
		
			
				|  |  | +                Assert.AreEqual(PayloadType.COMPRESSABLE, call.ResponseStream.Current.Payload.Type);
 | 
	
		
			
				|  |  | +                Assert.AreEqual(31415, call.ResponseStream.Current.Payload.Body.Length);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  await call.RequestStream.Write(StreamingOutputCallRequest.CreateBuilder()
 | 
	
		
			
				|  |  |                            .SetResponseType(PayloadType.COMPRESSABLE)
 | 
	
		
			
				|  |  |                            .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(9))
 | 
	
		
			
				|  |  |                            .SetPayload(CreateZerosPayload(8)).Build());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                response = await call.ResponseStream.ReadNext();
 | 
	
		
			
				|  |  | -                Assert.AreEqual(PayloadType.COMPRESSABLE, response.Payload.Type);
 | 
	
		
			
				|  |  | -                Assert.AreEqual(9, response.Payload.Body.Length);
 | 
	
		
			
				|  |  | +                Assert.IsTrue(await call.ResponseStream.MoveNext());
 | 
	
		
			
				|  |  | +                Assert.AreEqual(PayloadType.COMPRESSABLE, call.ResponseStream.Current.Payload.Type);
 | 
	
		
			
				|  |  | +                Assert.AreEqual(9, call.ResponseStream.Current.Payload.Body.Length);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  await call.RequestStream.Write(StreamingOutputCallRequest.CreateBuilder()
 | 
	
		
			
				|  |  |                            .SetResponseType(PayloadType.COMPRESSABLE)
 | 
	
		
			
				|  |  |                            .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(2653))
 | 
	
		
			
				|  |  |                            .SetPayload(CreateZerosPayload(1828)).Build());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                response = await call.ResponseStream.ReadNext();
 | 
	
		
			
				|  |  | -                Assert.AreEqual(PayloadType.COMPRESSABLE, response.Payload.Type);
 | 
	
		
			
				|  |  | -                Assert.AreEqual(2653, response.Payload.Body.Length);
 | 
	
		
			
				|  |  | +                Assert.IsTrue(await call.ResponseStream.MoveNext());
 | 
	
		
			
				|  |  | +                Assert.AreEqual(PayloadType.COMPRESSABLE, call.ResponseStream.Current.Payload.Type);
 | 
	
		
			
				|  |  | +                Assert.AreEqual(2653, call.ResponseStream.Current.Payload.Body.Length);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  await call.RequestStream.Write(StreamingOutputCallRequest.CreateBuilder()
 | 
	
		
			
				|  |  |                            .SetResponseType(PayloadType.COMPRESSABLE)
 | 
	
		
			
				|  |  |                            .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(58979))
 | 
	
		
			
				|  |  |                            .SetPayload(CreateZerosPayload(45904)).Build());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                response = await call.ResponseStream.ReadNext();
 | 
	
		
			
				|  |  | -                Assert.AreEqual(PayloadType.COMPRESSABLE, response.Payload.Type);
 | 
	
		
			
				|  |  | -                Assert.AreEqual(58979, response.Payload.Body.Length);
 | 
	
		
			
				|  |  | +                Assert.IsTrue(await call.ResponseStream.MoveNext());
 | 
	
		
			
				|  |  | +                Assert.AreEqual(PayloadType.COMPRESSABLE, call.ResponseStream.Current.Payload.Type);
 | 
	
		
			
				|  |  | +                Assert.AreEqual(58979, call.ResponseStream.Current.Payload.Body.Length);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                await call.RequestStream.Close();
 | 
	
		
			
				|  |  | +                await call.RequestStream.Complete();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                response = await call.ResponseStream.ReadNext();
 | 
	
		
			
				|  |  | -                Assert.AreEqual(null, response);
 | 
	
		
			
				|  |  | +                Assert.IsFalse(await call.ResponseStream.MoveNext());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  Console.WriteLine("Passed!");
 | 
	
		
			
				|  |  |              }).Wait();
 | 
	
	
		
			
				|  | @@ -309,7 +306,7 @@ namespace Grpc.IntegrationTesting
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  Console.WriteLine("running empty_stream");
 | 
	
		
			
				|  |  |                  var call = client.FullDuplexCall();
 | 
	
		
			
				|  |  | -                await call.Close();
 | 
	
		
			
				|  |  | +                await call.RequestStream.Complete();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  var responseList = await call.ResponseStream.ToList();
 | 
	
		
			
				|  |  |                  Assert.AreEqual(0, responseList.Count);
 | 
	
	
		
			
				|  | @@ -392,22 +389,20 @@ namespace Grpc.IntegrationTesting
 | 
	
		
			
				|  |  |                  var cts = new CancellationTokenSource();
 | 
	
		
			
				|  |  |                  var call = client.FullDuplexCall(cts.Token);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                StreamingOutputCallResponse response;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |                  await call.RequestStream.Write(StreamingOutputCallRequest.CreateBuilder()
 | 
	
		
			
				|  |  |                      .SetResponseType(PayloadType.COMPRESSABLE)
 | 
	
		
			
				|  |  |                      .AddResponseParameters(ResponseParameters.CreateBuilder().SetSize(31415))
 | 
	
		
			
				|  |  |                      .SetPayload(CreateZerosPayload(27182)).Build());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                response = await call.ResponseStream.ReadNext();
 | 
	
		
			
				|  |  | -                Assert.AreEqual(PayloadType.COMPRESSABLE, response.Payload.Type);
 | 
	
		
			
				|  |  | -                Assert.AreEqual(31415, response.Payload.Body.Length);
 | 
	
		
			
				|  |  | +                Assert.IsTrue(await call.ResponseStream.MoveNext());
 | 
	
		
			
				|  |  | +                Assert.AreEqual(PayloadType.COMPRESSABLE, call.ResponseStream.Current.Payload.Type);
 | 
	
		
			
				|  |  | +                Assert.AreEqual(31415, call.ResponseStream.Current.Payload.Body.Length);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  cts.Cancel();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  try
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  | -                    response = await call.ResponseStream.ReadNext();
 | 
	
		
			
				|  |  | +                    await call.ResponseStream.MoveNext();
 | 
	
		
			
				|  |  |                      Assert.Fail();
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  catch (RpcException e)
 |