listeners may set/return other response types, or throw exceptions which should be returned to the user.  we don't usually add multiple listeners, so for now i think okay not to notify all if one fails.