resolves after a specified number of milliseconds
cancelled if a given token is cancelled before a specified number of milliseconds
Throws
cancelled if a given token is cancelled before a specified number of milliseconds