Composable Error Recovery With Transactional Memory