code: def open(self, *, timeout=None, metadata=None) -> Stream:
          
          return self.channel.request(self.name, self._cardinality,
                                      self.request_type, self.reply_type,
                                      timeout=timeout, metadata=metadata)
docs: Creates and returns :py:class:`Stream` object to perform request
          to the server.
  
          Nothing will happen to the current underlying HTTP/2 connection during
          this method call. It just initializes :py:class:`Stream` object for you.
          Actual request will be sent only during :py:meth:`Stream.send_request`
          or :py:meth:`Stream.send_message` coroutine call.
  
          :param float timeout: request timeout (seconds)
          :param metadata: custom request metadata, dict or list of pairs
          :return: :py:class:`Stream` object