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
bool button_pressed()
{
return digitalRead (BUTTON) == LOW ;
}
void loop()
{
delay_till_condition (button_pressed) ;
}