code: def _close_connections(self, connection=None, timeout=5):
          
          all = []
          if connection:
              waiter = connection.event('connection_lost').waiter()
              if waiter:
                  all.append(waiter)
                  connection.close()
          else:
              connections = list(self._concurrent_connections)
              self._concurrent_connections = set()
              for connection in connections:
                  waiter = connection.event('connection_lost').waiter()
                  if waiter:
                      all.append(waiter)
                      connection.close()
          if all:
              self.logger.info('%s closing %d connections', self, len(all))
              return asyncio.wait(all, timeout=timeout, loop=self._loop)
docs: Close ``connection`` if specified, otherwise close all connections.
  
          Return a list of :class:`.Future` called back once the connection/s
          are closed.