Sounds to me like you are passing commands too fast for your/server's cmdrate.
Each cmd period will process the commands you send to the server. If multiple commands are sent during the same period, the server sees these commands as being sent at the same time. Most commands won't conflict with each other, but some will as is most likely your case.
For example you can "+moveleft;+speed;use weapon_x" at the same time without problems, but "use weapon_x" will override +attack. It appears to be the same with +attack2 overriding +attack in your case.
The only real solution to the problem is to make sure you are sending as many cmds as possible. Without delving too deep into the new (shitty) OJB source engine, making sure you have optimal rates will help this problem substantially. Specifically cl_cmdrate in this case.
Even if your cmdrate is set to the servers maximum, your frame rate can limit this value as well. Obviously we want to be pumping 100+ fps. Although since the OJB engine, 66+ is acceptable as most servers are running at 66 tic with a 66 sv_maxcmdrate. For most purposes we want to use the following commands unless your internet is complete crap.
rate 55555555555
cl_cmdrate 554352
cl_updaterate 342342
fps_max 0
Before we get the followers that will cry "omgz YOU DIDN'T SAY CL_CMDRATE 101 CL_UPDATERATE 101", open the console and just use insanely high numbers because the server is going to be the one that determines what the maxes will be. Z_block might be a wise and beautiful woman at times, but if it is just do what it says. The makers of Z_block got pretty retarded anyways. They don't know that fps_max 0 >= fps_max 66.
Anyways back to the problem. Verify your cmdrate with net_graph. If you already have followed the steps above and it persists, you are just going to have to accept the fact that you cannot execute +attack2 within 1000/cmd milliseconds of an +attack, else it will overwrite +attack.