This refactor is to make next diff possible.
The intention is to fix `outgoing`'s ownership issue when session creation fails (`send` forces `outgoing` to be mutable).
Doesn't look like a very optimal pattern, but not sure if this can be improved are is there a more graceful way to handle this - if anyone has any suggestions I am happy to change this :smile:
Creating separate diff to make it easier for reviewers, actual usage is in next diff.
Depends on D9593