// copy from the beginning
original.rewind();
clone.put(original);
original.rewind();
clone.flip();
executor.execute(new ReceiveEvent(this, clone));
} else {
executor.execute(new ReceiveEvent(this, message));
}
} else {
// synchronous call (in the I/O loop)
handler.messageReceived(this, message);
}