swallows and rethrows errors in two-args callbacks