code: public void writeBlock(MemorySegment segment) throws IOException
  	{
  		// check the error state of this channel
  		checkErroneous();
  		
  		// write the current buffer and get the next one
  		this.requestsNotReturned.incrementAndGet();
  		if (this.closed || this.requestQueue.isClosed()) {
  			// if we found ourselves closed after the counter increment,
  			// decrement the counter again and do not forward the request
  			this.requestsNotReturned.decrementAndGet();
  			throw new IOException("The writer has been closed.");
  		}
  		this.requestQueue.add(new SegmentWriteRequest(this, segment));
  	}
docs: Issues a asynchronous write request to the writer.
  
  @param segment The segment to be written.
  @throws IOException Thrown, when the writer encounters an I/O error. Due to the asynchronous nature of the
  writer, the exception thrown here may have been caused by an earlier write request.