While I can understand wanting to figure out how to implement certain features but are they really necessary to go forward? You mention concurrency, most of my programs are never going to need it so I don't see any advantage in holding up the WHOLE project to figure out that problem. Some features are great to have, but are not necessary to getting a core API started. Have a plan for integration in later.

I can also understand wanting to avoid design debt, I mean XS is a horrible hack that I have never figured out. But I think having a great design, which may never be possible, should not stand in the way of a good design which could be used in the near future.

I think this is more of a case of analysis paralysis, that a commitment to a current implementation would incur problems in the future. However, you will never get to the future if you don't commit to something. This leads to the problem, if the development team cannot commit to a design how can they expect other people to commit to it either.