use throttle to avoid function stream