change find() to not throw error and accept optional fallback function

per discussion in #428.