docs: def dump_stacks(self):
          '''
          Dumps the stack of all threads. This function
          is meant for debugging. Useful when a deadlock happens.
  
          borrowed from: http://blog.ziade.org/2012/05/25/zmq-and-gevent-debugging-nightmares/
          '''
  
          dump = []
  
          # threads
          threads = dict([(th.ident, th.name)
                              for th in threading.enumerate()])
  
          for thread, frame in sys._current_frames().items():
              if thread not in threads: continue
              dump.append('Thread 0x%x (%s)\n' % (thread, threads[thread]))
              dump.append(''.join(traceback.format_stack(frame)))
              dump.append('\n')
  
          return ''.join(dump)