without this change when user adds a callback then it's not wrapped in a trace representation, thus when executed in a separate thread, it's then missing all the tracing information
with this change we're wrapping the future in our representation that passes the tracing information around
fixes #546