add 'timeout' callback