The sample implementation won't perform well on implementations, for which call/cc is costly due to the presence of dynamic-wind. While I don't think that a Scheme implementation for which one of Scheme's main selling points is too slow to be used effectively is, in my opinion, a very decent one, I could change the sample implementation not to rely on call/cc in most use cases of forcing.

I could define a parameter object that holds a value representing the current dynamic environment (or dynamic extent, see above). Then I would have to setup and restore this parameter object at every use of dynamic-wind and parameterize. When a promised is forced, one can then take a short route if the current dynamic environment is the same as the one of the promise, which is testable by using the parameter object.

I have now provided special support for Chibi (just to have one demonstration target) in the sample implementation of SRFI 154 (upon which SRFI 155 builds). This specific implementation uses the ideas outlined above. With it, SRFI 155 promises are very lightweight when parameterize and dynamic-wind is not used (so we don't have to pay for what we don't use) because the "travel-to-point!" I am using from (chibi) will be a no-op.