init observer and update the request count
find and choose between idle and busy peers based on weight logic
getting and freein peers from spinlock