Call iterate w/o error if synchronous listener returns non-null.
Pass thrown error to callback; only cancel when return value is false.