TransportMan TSAN changes
Change OpenFilesAsync so that it no longer returns a future, but rather the future remains in the class and subsequent calls into the class wait for the async task before they continue. This preserves the current state of functionality while clearing up TSAN warnings, at a cost of an additional .valid() check on every public member invocation (rather than the one-time cost when those checks were in BP3/BP4 writer).