Promise.timeout() indicates time-out more precisely

When using Promise.timeout() you may want to differentiate between a promise time-out and other errors. To achive this I have added a TimeOutError class which Promise.timeout() use as rejection reason in case of a time-out.