AskTimeoutException very non informative. Added more info to it.

This could be very useful for debug. Very often timeouts occurs inside external library and you are not able to attach failure handler to them and to understand what happens.
If code diff is too big then I could reduce it by removing a sender.
This means that the message will be retained until the Promise is completed, though. So for bursts of large messages a non-insignificant portion of memory may be retained.