What is the purpose of OP_DROP From what I can tell OP_DROP is a method of storing non validation data in a tx ( seperate from using data after OP_RETURN ). 

However in this unlocking script described by bip199, the timeout block and timeout op are before the OP_DROP, meaning they would be dropped during validation? OP_DROP can't be describing what comes after because that should be the payment path validation - and because afaik bitcoin script is stack based.

What is the point of OP_DROP? How does it apply in the following script?

OP_IF
    [HASHOP] &lt;digest&gt; OP_EQUALVERIFY OP_DUP OP_HASH160 &lt;seller pubkey hash&gt;            
OP_ELSE
    &lt;num&gt; [TIMEOUTOP] OP_DROP OP_DUP OP_HASH160 &lt;buyer pubkey hash&gt;
OP_ENDIF
OP_EQUALVERIFY
OP_CHECKSIG
The TIMEOUTOP, which is one of OP_CHECKSEQUENCEVERIFY or OP_CHECKLOCKTIMEVERIFY, will either:


Terminate the script with an error if the TIMEOUT conditions are not met
Act as a NOP and leave the stack unchanged if the TIMEOUT conditions are met


2 occurs if the timeout has been met, and leaves the top of the stack with the timeout delay value. OP_DROP removes this value from the top of the stack, allowing the regular p2pkh script to continue execution by consuming the rest of the stack.