Let the user determine wait behavior by providing a listener
* enable partial writes
* document wait behavior