renamed opts.alert to opts.futureFn in case there's ever a call for other callbacks