This will be a ctx per flow right? Or 2 probably, one in each dir? Should we add some pool like concept to avoid the allocs?