Software Transactional Memory: a modular composable concurrency abstraction.