And 100000000000 doesn't fit into 16 bit integer, neither does 100000000000L fit into a 32 bit long.
If you call delay you are absolutely categorically stuck in the delay till it completes, end of story.
Basically don't use delay. Except perhaps in a very simple sketch where there's nothing else to do.
Your code should be reacting to a series of events, and loop() just checks for them one after another and handles any that arise. A timeout is one kind of event. Incoming serial is another, a change to a pin's state is another, etc etc.
Perhaps you need to explicitly represent states? Google "state machine" for more detail.
Note if you really do want a delay that can cancel, write a function to do it:
void delay_till_condition (bool (*condition)(void))
{
while (! condition())
{}
}
You can pass in an arbitrary condition testing function to it, such as
The functions delay() and delayMicroseconds() block the Arduino until they complete.
Have a look at how millis() is used to manage timing without blocking in Several Things at a Time.