code: def close(
          self,
          exc_info: Union[
              None,
              bool,
              BaseException,
              Tuple[
                  "Optional[Type[BaseException]]",
                  Optional[BaseException],
                  Optional[TracebackType],
              ],
          ] = False,
      ) -> None:
          
          if not self.closed():
              if exc_info:
                  if isinstance(exc_info, tuple):
                      self.error = exc_info[1]
                  elif isinstance(exc_info, BaseException):
                      self.error = exc_info
                  else:
                      exc_info = sys.exc_info()
                      if any(exc_info):
                          self.error = exc_info[1]
              if self._read_until_close:
                  self._read_until_close = False
                  self._finish_read(self._read_buffer_size, False)
              if self._state is not None:
                  self.io_loop.remove_handler(self.fileno())
                  self._state = None
              self.close_fd()
              self._closed = True
          self._signal_closed()
docs: Close this stream.
  
          If ``exc_info`` is true, set the ``error`` attribute to the current
          exception from `sys.exc_info` (or if ``exc_info`` is a tuple,
          use that instead of `sys.exc_info`).