throw exception when callback is required but not provided; add tests for this
add tests for callback-supporting version of select and select_first