handles futures with callbacks, no buffer