more flexible DecodeResponseBodyOrSendError