code: function ClientDuplexStream(call) {
    Duplex.call(this, {objectMode: true});
    this.call = call;
    /* Status generated from reading messages from the server. Overrides the
     * status from the server if not OK */
    this.read_status = null;
    /* Status received from the server. */
    this.received_status = null;
    var self = this;
    this.on('finish', function() {
      self.call.halfClose();
    });
  }
docs: A stream that the client can read from or write to. Used for calls with
  duplex streaming.
  @constructor grpc~ClientDuplexStream
  @extends external:Duplex
  @borrows grpc~ClientUnaryCall#cancel as grpc~ClientDuplexStream#cancel
  @borrows grpc~ClientUnaryCall#getPeer as grpc~ClientDuplexStream#getPeer
  @borrows grpc~ClientWritableStream#write as grpc~ClientDuplexStream#write
  @borrows grpc~ClientUnaryCall#event:metadata as
  grpc~ClientDuplexStream#metadata
  @borrows grpc~ClientUnaryCall#event:status as
  grpc~ClientDuplexStream#status
  @param {InterceptingCall} call Exposes gRPC request operations, processed by
  an interceptor stack.