code: def put(self, value):
          
          io_loop = IOLoop.current()
          new_hole = Future()
  
          new_put = Future()
          new_put.set_result(new_hole)
  
          with self._lock:
              self._put, put = new_put, self._put
  
          answer = Future()
  
          def _on_put(future):
              if future.exception():  # pragma: no cover (never happens)
                  return answer.set_exc_info(future.exc_info())
  
              old_hole = put.result()
              old_hole.set_result(Node(value, new_hole))
              answer.set_result(None)
  
          io_loop.add_future(put, _on_put)
          return answer
docs: Puts an item into the queue.
  
          Returns a Future that resolves to None once the value has been
          accepted by the queue.