def METHOD_NAME(self, connections, timeout):
    for c in list(connections):
        if c.closed:
            self.remove_connection(c)
            connections.remove(c)
    requests = []
    try:
        rl, wl, xl = select.select(connections, [], [], timeout)
    except select.error:
        logging.debug(traceback.format_exc())
        return []
    for f in rl:
        f_ready = True
        while f_ready:
            try:
                data = recv_data(f)
                if data == "":
                    f.close()
                    self.remove_connection(f)
                    f_ready = False
                elif data is not None:
                    id = self.get_connection_id(f)
                    requests.append((id, data))
                if f_ready:
                    #poll the file descriptor if there is another message
                    rll, _, _ = select.select([f], [], [], 0)
                    if rll == []:
                        f_ready = False
            except socket.error:
                f_ready = False
                f.close()
                self.remove_connection(f)
            except EOFError:
                f_ready = False
                f.close()
                self.remove_connection(f)
    return requests