code: def release(self, conn):
          
          assert conn in self._used, (
              "Invalid connection, maybe from other pool", conn)
          self._used.remove(conn)
          if not conn.closed:
              if conn.in_transaction:
                  logger.warning(
                      "Connection %r is in transaction, closing it.", conn)
                  conn.close()
              elif conn.in_pubsub:
                  logger.warning(
                      "Connection %r is in subscribe mode, closing it.", conn)
                  conn.close()
              elif conn._waiters:
                  logger.warning(
                      "Connection %r has pending commands, closing it.", conn)
                  conn.close()
              elif conn.db == self.db:
                  if self.maxsize and self.freesize < self.maxsize:
                      self._pool.append(conn)
                  else:
                      # consider this connection as old and close it.
                      conn.close()
              else:
                  conn.close()
          # FIXME: check event loop is not closed
          asyncio.ensure_future(self._wakeup(), loop=self._loop)
docs: Returns used connection back into pool.
  
          When returned connection has db index that differs from one in pool
          the connection will be closed and dropped.
          When queue of free connections is full the connection will be dropped.