code: public void add(@Nullable T item) throws Exception {
  		if (exception == null) {
  			if (take != null) {
  				assert isEmpty();
  				SettablePromise<T> take = this.take;
  				this.take = null;
  				take.set(item);
  				if (exception != null) throw exception;
  				return;
  			}
  
  			doAdd(item);
  		} else {
  			tryRecycle(item);
  			throw exception;
  		}
  	}
docs: Adds provided item to the buffer and resets current {@code take}.