code: def get(self):
          
          io_loop = IOLoop.current()
          new_get = Future()
  
          with self._lock:
              get, self._get = self._get, new_get
  
          answer = Future()
  
          def _on_node(future):
              if future.exception():  # pragma: no cover (never happens)
                  return answer.set_exc_info(future.exc_info())
  
              node = future.result()
              value = node.value
              new_hole, node.next = node.next, None
              new_get.set_result(new_hole)
              answer.set_result(value)
  
          def _on_get(future):
              if future.exception():  # pragma: no cover (never happens)
                  return answer.set_exc_info(future.exc_info())
  
              hole = future.result()
              io_loop.add_future(hole, _on_node)
  
          io_loop.add_future(get, _on_get)
          return answer
docs: Gets the next item from the queue.
  
          Returns a Future that resolves to the next item once it is available.