think about whether read_data() should throw select_interrupted() by default
Drive message queues off notifications rather than the timeout mechanism of Endpoint
This class is only a preview and is not operational