pexpect timeout is not being used, only the default of 30 is being used
It appears to work if you only specify the timeout in the .spawn call, you cannot override, or use timeout=300 in the .expect call by itself.
Just tried the following and it seems to work:
child.timeout=300
child.expect("...")