code: def get(self):
          
          if not self.filling:
              self.fill()
  
          answer = tornado.gen.Future()
  
          def _on_result(future):
              if future.exception():
                  return answer.set_exc_info(future.exc_info())
              answer.set_result(future.result())
  
          def _on_item(future):
              if future.exception():
                  return answer.set_exc_info(future.exc_info())
              future.result().add_done_callback(_on_result)
  
          self.queue.get().add_done_callback(_on_item)
          return answer
docs: Receive the next message off the wire.
  
          :returns:
              A Future that resolves to the next message off the wire.